java - JUNIT : run setup only once for a large number of test classes

标签 java database unit-testing junit package

我有一个类,我用它作为单元测试的基础。在这个类中,我为我的测试初始化​​整个环境,设置数据库映射,在多个表中输入许多数据库记录,等等。该类有一个带有 @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/

相关文章:

php - 比较数据库中匹配值的两个表并写入/合并到新表

Angular Jasmine 单元测试错误,在 spy 上出现 'and'

c# - 如何在 Visual Studio 中使用 XUnit 对在远程进程中运行的代码进行单元测试

java - 无法弄清楚我要传递给这种排序方法的参数类型

sql - 如何使用 SQL Management Studio 在数据库之间传输所有表?

java - 如何将 java 对象的 id 同步到其关联的数据库行?

mysql - SQL中与外键的关系?

python - 如何用任何参数填充函数?

java - 是否有替代方法可以覆盖引用示例中的抽象方法?

java - 当我使用这个线程代码时,我的应用程序崩溃了