我写了一个集成测试,其中包含多个基于彼此的测试。因此,测试方法不是独立的,执行顺序由@FixMethodOrder(MethodSorters.NAME_ASCENDING)
和命名约定强制执行。
@RunWith(SpringRunner.class)
@SpringBootTest
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@EnableTransactionManagement
public class AnIntegrationTest {
@Test
public void t001startProcess() {
// ...
}
@Test
public void t002addItem() {
// ...
}
}
该测试将创建的数据保留在H2测试数据库中,并且在测试套件中执行时,后续测试将失败。
在执行了所有类的测试之后,我该如何用事务处理所有类的测试,并回滚所有数据库修改?
答案 0 :(得分:0)
我知道这不能完全满足您的要求,但是这里有一些帮助
如果集成测试的要求是对添加的行执行SELECT/UPDATE
操作,则可以在带有insert
注释方法的测试类中进行@Before
查询,然后{ {1}}通过带注释的方法delete
查询。
这将确保每次执行测试方法时添加记录,然后删除记录。但是,如果您希望在下一个测试方法执行期间显示在一个测试方法中更新的数据,则此解决方案将无法工作
示例
@After