有时,在运行测试用例时,我们的代码还没有完全准备就绪.结果,测试用例失败.在这种情况下, @Ignore 注释会有所帮助.
使用@Ignore注释的测试方法将不执行.
如果测试类使用@Ignore注释,则不会执行任何测试方法.
现在让我们看看@Ignore的运作情况.
创建一个类
创建一个要测试的java类,比如说, MessageUtil.java 在C:\> JUNIT_WORKSPACE.
/** 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; } }
创建测试用例类
创建一个java测试类,比如,TestJunit.java.
添加测试方法testPrintMessage()或testSalutationMessage()到您的测试类.
向方法testPrintMessage()添加Annotaion @Ignore.
在C:\ JUNIT_WORKSPACE中创建名为 TestJunit.java 的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()); }}
创建测试运行器类
创建java C:\> JUNIT_WORKSPACE中名为 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
现在运行测试Runner,它不会运行在提供的Test Case类中定义的testPrintMessage()测试用例.
C:\ JUNIT_WORKSPACE> java TestRunner
验证输出. testPrintMessage()测试用例未经过测试.
Inside testSalutationMessage()Hi!Roberttrue
现在,在C:\> JUNIT_WORKSPACE中更新TestJunit以忽略所有测试用例.在班级添加@Ignore.
import org.junit.Test;import org.junit.Ignore;import static org.junit.Assert.assertEquals;@Ignorepublic 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编译测试用例.
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类中定义的任何测试用例./p>
C:\ JUNIT_WORKSPACE> java TestRunner
验证输出.没有测试过测试用例.
true