JUnit测试注解之@Ignore

在本教程中,将了解-

  • 什么是JUnit@Ignore测试注释
  • Junit测试示例-忽略
  • 在不忽略测试的情况下创建一个简单的测试类
  • 使用@Ignore注释忽略测试方法
  • 将@Ignore注解与条件一起使用
  • 使用@Ignore注释忽略所有测试方法。

什么是JUnit@Ignore测试注释

@Ignore测试注释用于忽略特定测试或测试组 ,以便跳过构建失败。

@Ignore注释可以在两个场景中使用 ,如下所示:

  1. 如果想忽略一个测试方法,使用@Ignore和 @Test注释
  2. 如果想忽略类的所有测试,在类级别使用@Ignore注释。

可以在@Ignore注释提供的可选参数中提供禁用测试的原因。

它将帮助从事同一段代码的其他开发人员理解“为什么禁用特定测试?”修复该特定测试的问题后,只需删除@Ignore注释即可启用它。

Junit测试示例-忽略

正如在上面的定义中所讨论的,可以使用@Ignore注释来忽略一个测试或一组测试。

让我们用简单的例子来理解一下,在下面给定的场景中:

  1. 在不忽略测试的情况下创建一个简单的测试类。
  2. 使用@Ignore注释忽略测试方法。
  3. 有正当理由使用@Ignore注释忽略测试方法。
  4. 使用@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 Ignore Test
JUnit Ignore Test

控制台上的打印语句:

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 Ignore Test
JUnit Ignore Test

控制台上的打印语句:

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());
    }
}

输出:

JUnit Ignore Test
JUnit Ignore Test

控制台上的打印语句:

由于在类级别使用@Ignore跳过了这两个测试,因此不会在控制台上打印任何语句。

总结:

在本教程中,学习了如何使用@Ignore注释忽略单个测试、一组测试或所有测试。

@Ignore注释可以在两个场景中使用 ,如下所示:

  1. 如果想忽略一个测试方法,使用@Ignore和 @Test注释
  2. 如果想忽略类的所有测试,在类级别使用@Ignore注释。

还学习了如何提供语句以使其他开发人员理解为什么禁用特定测试。

IT赶路人

专注IT知识分享