2021-05-29 11:07  阅读(1503)
文章分类:JUnit 教程 文章标签:JUnit单元测试
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/junit/

JUnit - 忽略测试

有时可能会发生我们的代码还没有准备好的情况,这时测试用例去测试这个方法或代码的时候会造成失败。@Ignore 注释会在这种情况时帮助我们。

  • 一个含有 @Ignore 注释的测试方法将不会被执行。
  • 如果一个测试类有 @Ignore 注释,则它的测试方法将不会执行。

现在我们用例子来学习 @Ignore。

创建一个类

  • 在目录 C:\ > JUNIT_WORKSPACE 中创建一个将被测试的 java 类命名为 MessageUtil.java。
        /*
        * This class prints the given message on console.
        */
        public class MessageUtil {
    
           private String message;
    
           //Constructor
           //@param message to be printed
           public MessageUtil(String message){
              this.message = message; 
           }
    
           // prints the message
           public String printMessage(){
              System.out.println(message);
              return message;
           }   
    
           // add "Hi!" to the message
           public String salutationMessage(){
              message = "Hi!" + message;
              System.out.println(message);
              return message;
           }   
        } 

创建 Test Case 类

  • 创建 java 测试类命名为 TestJunit.java。
  • 在类中加入测试方法 testPrintMessage() 和 testSalutationMessage()。
  • 在方法 testPrintMessage() 中加入 @Ignore 注释。

在目录 C:\ > JUNIT_WORKSPACE 中创建一个 java 类文件命名为 TestJunit.java

        import org.junit.Test;
        import org.junit.Ignore;
        import static org.junit.Assert.assertEquals;
    
        public class TestJunit {
    
           String message = "Robert";   
           MessageUtil messageUtil = new MessageUtil(message);
    
           @Ignore
           @Test
           public void testPrintMessage() {
              System.out.println("Inside testPrintMessage()");
              message = "Robert";
              assertEquals(message,messageUtil.printMessage());
           }
    
           @Test
           public void testSalutationMessage() {
              System.out.println("Inside testSalutationMessage()");
              message = "Hi!" + "Robert";
              assertEquals(message,messageUtil.salutationMessage());
           }
        }

创建 Test Runner 类

在目录 C:\ > JUNIT_WORKSPACE 创建一个 java 类文件叫做 TestRunner.java 来执行测试用例。

        import org.junit.runner.JUnitCore;
        import org.junit.runner.Result;
        import org.junit.runner.notification.Failure;
    
        public class TestRunner {
           public static void main(String[] args) {
              Result result = JUnitCore.runClasses(TestJunit.class);
              for (Failure failure : result.getFailures()) {
                 System.out.println(failure.toString());
              }
              System.out.println(result.wasSuccessful());
           }
        }  

使用 javac 命令编译 MessageUtil, Test case 和 Test Runner 类。

        C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

现在运行 Test Runner 类,即不会运行在 Test Case 类中定义的 testPrintMessage() 测试用例。

        C:\JUNIT_WORKSPACE>java TestRunner

验证输出。testPrintMessage() 测试用例并没有被测试。

        Inside testSalutationMessage()
        Hi!Robert
        true

现在更新在目录 C:\ > JUNIT_WORKSPACE 中的 TestJunit 在类级别上使用 @Ignore 来忽略所有的测试用例

        import org.junit.Test;
        import org.junit.Ignore;
        import static org.junit.Assert.assertEquals;
    
        @Ignore
        public class TestJunit {
    
           String message = "Robert";   
           MessageUtil messageUtil = new MessageUtil(message);
    
           @Test
           public void testPrintMessage() {
              System.out.println("Inside testPrintMessage()");
              message = "Robert";
              assertEquals(message,messageUtil.printMessage());
           }
    
           @Test
           public void testSalutationMessage() {
              System.out.println("Inside testSalutationMessage()");
              message = "Hi!" + "Robert";
              assertEquals(message,messageUtil.salutationMessage());
           }
        }

使用 javac 命令编译 Test case

        C:\JUNIT_WORKSPACE>javac TestJunit.java

保持你的 Test Runner 不被改变,如下:

        import org.junit.runner.JUnitCore;
        import org.junit.runner.Result;
        import org.junit.runner.notification.Failure;
    
        public class TestRunner {
           public static void main(String[] args) {
              Result result = JUnitCore.runClasses(TestJunit.class);
              for (Failure failure : result.getFailures()) {
                 System.out.println(failure.toString());
              }
              System.out.println(result.wasSuccessful());
           }
        }

现在运行 Test Runner 即不会运行在 Test Case 类中定义的任何一个测试样例。

        C:\JUNIT_WORKSPACE>java TestRunner

验证输出。没有测试用例被测试。

        true

作者:w3cschool 来源:https://www.w3cschool.cn

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> JUnit – 忽略测试
上一篇
JUnit – 套件测试
下一篇
JUnit – 时间测试