如何解决维护集成测试而不影响主应用程序数据的最佳约定是什么?
我正在创建一个带有集成测试用例的Spring Boot应用程序,这些用例执行持久性和删除随机生成的记录。试图确保测试数据不会干扰应用程序正在使用的实际数据。我尝试了两种方法来解决此问题:
-
在测试目录下创建一个单独的属性文件,即src> test> resources,它指向一个单独的数据库(此数据库具有相同的表,但此处仅存储测试数据)。此处存储的属性为:
spring.datasource.url=jdbc:mysql://localhost:3306/testDB
。src> main>中的属性资源将具有:
spring.datasource.url=jdbc:mysql://localhost:3306/actualDB
-
在测试用例上使用回滚批注,并且该类被标记为事务性的(在这种情况下,没有单独的属性文件,两个应用程序使用相同的架构,并且没有持久性进行测试):
@SpringBootTest
@Transactional
public class JpatestsApplicationTests {
@Autowired
private FirstTableRepo jpaRepo;
@Test
@Rollback
public void testSave() {
FirstTable firstTable1 = new FirstTable();
firstTable1.setUid("x");
firstTable1.setRandom("rand");
jpaRepo.saveAndFlush(firstTable1);
}
}
哪种方法更好?第一种方法将测试数据和实际数据保存在单独的模式中,而第二种方法保存在同一表中,但是将回滚而不会发生对数据库的提交。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。