有时可能会发生我们的代码还没有准备好的情况,这时测试用例去测试这个方法或代码的时候会造成失败。@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 printedpublic MessageUtil(String message){this.message = message;}// prints the messagepublic String printMessage(){System.out.println(message);return message;}// add "Hi!" to the messagepublic 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@Testpublic void testPrintMessage() {System.out.println("Inside testPrintMessage()");message = "Robert";assertEquals(message,messageUtil.printMessage());}@Testpublic 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!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);@Testpublic void testPrintMessage() {System.out.println("Inside testPrintMessage()");message = "Robert";assertEquals(message,messageUtil.printMessage());}@Testpublic 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
转载本站内容时,请务必注明来自W3xue,违者必究。


优化或报错有奖
皖公网安备34020702000426号