在本教程中,将了解-
- 什么是JUnit@Ignore测试注释
- Junit测试示例-忽略
- 在不忽略测试的情况下创建一个简单的测试类
- 使用@Ignore注释忽略测试方法
- 将@Ignore注解与条件一起使用
- 使用@Ignore注释忽略所有测试方法。
什么是JUnit@Ignore测试注释
@Ignore测试注释用于忽略特定测试或测试组 ,以便跳过构建失败。
@Ignore注释可以在两个场景中使用 ,如下所示:
- 如果想忽略一个测试方法,使用@Ignore和 @Test注释 。
- 如果想忽略类的所有测试,在类级别使用@Ignore注释。
可以在@Ignore注释提供的可选参数中提供禁用测试的原因。
它将帮助从事同一段代码的其他开发人员理解“为什么禁用特定测试?”修复该特定测试的问题后,只需删除@Ignore注释即可启用它。
Junit测试示例-忽略
正如在上面的定义中所讨论的,可以使用@Ignore注释来忽略一个测试或一组测试。
让我们用简单的例子来理解一下,在下面给定的场景中:
- 在不忽略测试的情况下创建一个简单的测试类。
- 使用@Ignore注释忽略测试方法。
- 有正当理由使用@Ignore注释忽略测试方法。
- 使用@Ignore注释忽略所有测试方法。
在不忽略测试的情况下创建一个简单的测试类
让我们创建一个简单的Java类,它打印两种类型的消息。
- 第一个方法打印一条简单的消息,并
- 第二个方法打印“hi”消息
JUnitMessage.java
package guru.junit;
public class JUnitMessage {
private String message;
public JUnitMessage(String message) {
this.message = message;
}
public String printMessage() {
System.out.println(message);
return message;
}
public String printHiMessage() {
message="Hi!"+ message;
System.out.println(message);
return message;
}
}
JunitTestExample.java
让我们创建一个JUnit测试类来测试JUnitMessage.java。
在这个JUnit测试类中,
- 第一个测试名为“ testJUnitMessage() ”,测试上面类的“printMessage()”方法。
- 类似地,名为“testJUnitHiMessage”的第二个测试测试上述类的“testJUnitHiMessage”。
package guru.junit;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class JunitTestExample {
public String message = "guru99";
JUnitMessage junitMessage = new JUnitMessage(message);
@Test
public void testJUnitMessage() {
System.out.println("Junit Message is printing");
assertEquals(message, junitMessage.printMessage());
}
@Test
public void testJUnitHiMessage() {
message="Hi!" +message;
System.out.println("Junit Hi Message is printing ");
assertEquals(message, junitMessage.printHiMessage());
}
}
TestRunner.java
让我们创建一个测试运行器类来执行JunitTestExample.java
package guru.junit;
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(JunitTestExample.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println("Result=="+result.wasSuccessful());
}
}
输出:
控制台上的打印语句:
Junit Hi Message is printing Hi Message
Hi!guru
Junit Hi Message is printing
guru
使用@Ignore注释忽略测试方法
在上面示例中,让我们创建忽略测试来禁用测试。为此,需要在方法中使用@Ignore,希望跳过。
让我们为JunitTestExample.java的 testJUnitMessage() 执行此操作
JunitTestExample.java
package guru.junit;
import static org.junit.Assert.assertEquals;
import org.junit.Ignore;
import org.junit.Test;
public class JunitTestExample {
public String message = "guru";
JUnitMessage junitMessage = new JUnitMessage(message);
@Ignore
@Test
public void testJUnitMessage() {
System.out.println("Junit Message is printing ");
assertEquals(message, junitMessage.printMessage());
}
@Test
public void testJUnitHiMessage() {
message="Hi!" +message;
System.out.println("Junit Hi Message is printing ");
assertEquals(message, junitMessage.printHiMessage());
}
}
输出:
让我们执行并验证上面示例的输出。
下面的输出显示跳过(禁用)了一个测试,如下所示:
控制台上的打印语句:
Junit Hi Message is printing
Hi!guru99
将@Ignore注解与条件一起使用
让我们以如何忽略测试为例,并一起定义忽略的原因。如上所述,要提供原因,在@Ignore注释中有一个可选参数,可以在其中提供原因语句。
JunitTestExample.java
package guru99.junit;
import static org.junit.Assert.assertEquals;
import org.junit.Ignore;
import org.junit.Test;
public class JunitTestExample {
public String message = "Guru99";
JUnitMessage junitMessage = new JUnitMessage(message);
@Ignore("not yet ready , Please ignore.")
@Test
public void testJUnitMessage() {
System.out.println("Junit Message is printing ");
assertEquals(message, junitMessage.printMessage());
}
@Test
public void testJUnitHiMessage() {
message="Hi!" +message;
System.out.println("Junit Hi Message is printing ");
assertEquals(message, junitMessage.printHiMessage());
}
}
输出:
同上。
使用@Ignore注释忽略所有测试方法。
如上所述,要忽略类中的所有测试,需要在类级别使用@Ignore注释。
让我们修改上面的示例,以了解如何忽略所有测试:
package guru.junit;
import static org.junit.Assert.assertEquals;
import org.junit.Ignore;
import org.junit.Test;
@Ignore
public class JunitTestExample {
public String message = "guru99";
JUnitMessage junitMessage = new JUnitMessage(message);
@Test
public void testJUnitMessage() {
System.out.println("Junit Message is printing ");
assertEquals(message, junitMessage.printMessage());
}
@Test
public void testJUnitHiMessage() {
message="Hi!" +message;
System.out.println("Junit Hi Message is printing ");
assertEquals(message, junitMessage.printHiMessage());
}
}
输出:
控制台上的打印语句:
由于在类级别使用@Ignore跳过了这两个测试,因此不会在控制台上打印任何语句。
总结:
在本教程中,学习了如何使用@Ignore注释忽略单个测试、一组测试或所有测试。
@Ignore注释可以在两个场景中使用 ,如下所示:
- 如果想忽略一个测试方法,使用@Ignore和 @Test注释 。
- 如果想忽略类的所有测试,在类级别使用@Ignore注释。
还学习了如何提供语句以使其他开发人员理解为什么禁用特定测试。