教程 > junit 教程 > 阅读:22

junit 忽略测试——迹忆客-ag捕鱼王app官网

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

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

现在我们用例子来学习 @ignore

创建一个类

在目录 c:\ > junit_workspace 中创建一个将被测试的 java 类命名为 messageutil.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

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 来执行测试用例。

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 casetest 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 来忽略所有的测试用例

testjunit

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 不被改变,如下:

testrunner

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

查看笔记

扫码一下
查看教程更方便
网站地图