情况和问题
我有几个测试类,每个都有几个测试方法。所有测试在后台使用相同的测试数据库。每个测试类初始化它的数据库内容,然后在几个测试方法中测试东西。
当我单独运行每个测试时,它们都通过了。但是当我同时运行多个测试时(使用 maven 或我的 IDE,IntelliJ),不同测试类的方法会交错运行,例如。第二类的数据库初始化在第一类开始之后但在第一类的所有测试方法运行之前运行,因此这些方法将失败(因为数据库已经包含第二类的数据)。
我尝试过的一些事情,以及更多细节
最简单的解决方案是强制 TestNG 运行程序连续运行类(即,在运行另一个类的测试方法之前等待一个测试类的所有测试方法完成)。这可以做到吗?
我可以通过在我的套件中将每个类指定为单独的测试来做到这一点,但我不想这样做,因为这意味着每当我添加一个笨拙和错误的测试类时,我都必须向套件中添加一些东西-易于。
简单地要求 TestNG 不并行化任何东西(例如,将线程数设置为 1 或禁用并行运行)在这里没有帮助,因为方法仍然以错误的顺序运行(尽管不是同时)。
一种选择是为每个测试类使用不同的数据库,但我没有看到一种简单的方法来做到这一点(使用 JPA 和 Guice)。
我目前没有使用 DBUnit、Unitils 等;我不太了解这些工具,但我的印象是不能解决我的问题。
我正在使用 JPA 在每个测试类中初始化数据库(即创建实体对象并保存它们)。