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 注解。
您还学习了如何提供一个语句,让其他开发人员理解为什么某个特定测试被禁用。