我有一个类,我用它作为单元测试的基础。在这个类中,我为我的测试初始化整个环境,设置数据库映射,在多个表中输入许多数据库记录,等等。该类有一个带有 @BeforeClass 注释的方法来进行初始化。接下来,我使用具有 @Test 方法的特定类扩展该类。
我的问题是,由于所有这些测试类的前级完全相同,我如何确保它们对所有测试只运行一次。 一个简单的解决方案是我可以将所有测试放在一个类中。但是,测试的数量很大,而且它们是根据功能头进行分类的。因此它们位于不同的类中。但是,由于它们需要完全相同的设置,因此它们继承了 @BeforeClass。因此,每个测试类至少完成一次整个设置,总共花费的时间比我希望的要多得多。
不过,我可以将它们全部放在一个包下的各种子包中,因此,如果有办法,我如何为该包中的所有测试运行一次设置,那就太好了。
最佳答案
使用 JUnit4 测试套件,您可以执行以下操作:
@RunWith(Suite.class)
@Suite.SuiteClasses({ Test1IT.class, Test2IT.class })
public class IntegrationTestSuite
{
@BeforeClass
public static void setUp()
{
System.out.println("Runs before all tests in the annotation above.");
}
@AfterClass
public static void tearDown()
{
System.out.println("Runs after all tests in the annotation above.");
}
}
然后你像运行一个普通的测试类一样运行这个类,它会运行你所有的测试。
关于java - JUNIT : run setup only once for a large number of test classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18574513/