JUnit测试套件:RunWith和SuiteClasses

在Junit中,测试套件允许我们将来自多个类的所有测试用例聚合到一个位置并一起运行。

要运行套件测试,需要使用下面提到的注释对类进行注释:

  1. @ Runwith(Suite.class)
  2. @ SuiteClasses(test1.class,test2.class……) 或@Suite.SuiteClasses({test1.class,test2.class……})

有了上面的注释,套件中的所有测试类都将开始逐个执行。

创建测试套件和测试运行器的步骤

步骤1) 创建一个简单的测试类(例如MyFirstClassTest),并添加一个带有@Test注释的方法。

Create JUnit Test Suite
Create JUnit Test Suite

步骤2) 创建另一个要添加的测试类(例如MysecondClassTest),并创建一个用@Test注释的方法。

Create JUnit Test Suite
Create JUnit Test Suite

步骤3) 要创建测试套件,需要首先使用@RunWith(Suite.class)和@ SuiteClasses(class1.class2…..) 注释该类。

Create JUnit Test Suite
Create JUnit Test Suite

步骤4) 创建一个Test Runner类来运行我们的测试套件,如下所示;

Create JUnit Test Suite
Create JUnit Test Suite

代码说明:

  • 代码行8:声明将运行我们的JUnit测试的类测试的Main方法。
  • 代码行9:使用JunitCore.runclass执行测试用例,它接受测试类名作为参数(在上面的示例中,使用的是步骤3中所示的TestSuiteExample.class)。
  • 代码行11:使用for循环处理结果,打印失败结果。
  • 代码行13:打印成功结果。

输出:以下是显示测试成功且没有故障跟踪的输出,如下所示:

Create JUnit Test Suite
Create JUnit Test Suite

JUnit测试套件示例

考虑一个更复杂的例子

JunitTest.java

java是一个简单的类,带有@RunWith和 @Suite注释 。可以将套件中的.class数量作为参数列出,如下所示:

package guru.junit;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
    SuiteTest1.class,
    SuiteTest2.class,
})
public class JunitTest {
// This class remains empty, it is used only as a holder for the above annotations
}

SuiteTest1.java

SuiteTest1.java是一个测试类,它具有如下所示的打印消息的测试方法。将在上面提到的类中使用这个类作为套件。

package guru.junit;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class SuiteTest1 {
    public String message = "Saurabh";
    JUnitMessage junitMessage = new JUnitMessage(message);
    @Test(expected = ArithmeticException.class)
    public void testJUnitMessage() {
        System.out.println("Junit Message is printing ");
        junitMessage.printMessage();
    }
    @Test
    public void testJUnitHiMessage() {
        message = "Hi!" + message;
        System.out.println("Junit Hi Message is printing ");
        assertEquals(message, junitMessage.printHiMessage());
        System.out.println("Suite Test 2 is successful " + message);
    }
}

SuiteTest2.java

SuiteTest2.java是另一个类似于SuiteTest1.java的测试类,具有如下所示的打印消息的测试方法。将在JunitTest.java中将该类用作套件。

package guru.junit;
import org.junit.Assert;
import org.junit.Test;
public class SuiteTest2 {
 
    @Test
    public void createAndSetName() {
 
        String expected = "Y";
        String actual = "Y";
        Assert.assertEquals(expected, actual);
        System.out.println("Suite Test 1 is successful " + actual);
    }
}

输出

执行JunitTest.java(它包含一个具有test1.java和test2.java的套件)后,将得到以下输出:

Create JUnit Test Suite
Create JUnit Test Suite
Create JUnit Test Suite
Create JUnit Test Suite

总结

在本教程中,通过一个示例详细了解了测试工具和测试套件的基础知识。

  • 测试工具或自动化测试是一个软件或一组软件,它允许用户测试具有多个输入的数据并控制执行
  • 测试工具实际上启用了一个测试框架,该框架执行使用测试库执行测试和生成测试报告的所有工作
  • 在Junit中,测试套件允许我们将多个类的所有测试用例聚合到一个位置并一起运行。

IT赶路人

专注IT知识分享