JUnit @Ignore 测试注解示例
有时您可能需要不执行某个方法/代码或测试用例,因为编码尚未完全完成。对于那个特定的测试,JUnit 提供了@Ignore注解来跳过测试。
什么是 JUnit @Ignore 测试注解
@Ignore 测试注解用于忽略特定的测试或测试组,以避免构建失败。
@Ignore 注解可以在以下两种情况下使用
- 如果您想忽略一个测试方法,请将 @Ignore 与 @Test 注解一起使用。
- 如果您想忽略一个类的所有测试,请在类级别使用 @Ignore 注解。
您可以在 @Ignore 注解提供的可选参数中提供禁用测试的原因。
这将帮助其他开发人员在同一段代码上工作时,理解“为什么某个特定的测试被禁用?” 当该特定测试的问题解决后,您只需通过删除@Ignore 注解来启用它。
Junit 测试示例 – 忽略
如上述定义所述,您可以使用 @Ignore 注解来忽略一个测试或一组测试。
让我们通过简单的示例和以下给定的场景来理解它
- 创建一个不忽略测试的简单测试类。
- 使用 @Ignore 注解忽略一个测试方法。
- 使用带有适当原因的 @Ignore 注解忽略一个测试方法。
- 使用 @Ignore 注解忽略所有测试方法。
创建一个不忽略测试的简单测试类
让我们创建一个简单的Java类,它打印两种类型的消息。
- 第一个方法打印一个简单的消息,并且
- 第二个方法打印一个“hi”消息
JUnitMessage.java
package guru99.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 guru99.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 guru99.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 消息正在打印
嗨!Guru99
Junit 消息正在打印
Guru99
使用 @Ignore 注解忽略一个测试方法
让我们创建忽略测试来禁用上述示例中的测试。为此,您需要在要跳过的方法中使用 @Ignore。
让我们为 JunitTestExample.java 中的 testJUnitMessage() 执行此操作
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
@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 消息正在打印
嗨!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 guru99.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 注解。
您还学习了如何提供一个语句,让其他开发人员理解为什么某个特定测试被禁用。



