Spring boot 在不影响主要应用程序数据的情况下,维护集成测试的最佳约定是什么?

Spring boot 在不影响主要应用程序数据的情况下,维护集成测试的最佳约定是什么?,spring-boot,spring-data-jpa,integration-testing,Spring Boot,Spring Data Jpa,Integration Testing,我正在创建一个带有集成测试用例的spring引导应用程序,这些测试用例执行持久性和随机生成记录的删除。尝试确保测试数据不会干扰应用程序使用的实际数据。我尝试了两种方法来管理此问题: 在测试目录下创建一个单独的属性文件,即src>test>resources,它指向一个单独的数据库(这个数据库有相同的表,但这里只存储测试数据)。存储在这里的属性是:spring.datasource.url=jdbc:mysql://localhost:3306/testDB src>main>resources中

我正在创建一个带有集成测试用例的spring引导应用程序,这些测试用例执行持久性和随机生成记录的删除。尝试确保测试数据不会干扰应用程序使用的实际数据。我尝试了两种方法来管理此问题:

  • 在测试目录下创建一个单独的属性文件,即src>test>resources,它指向一个单独的数据库(这个数据库有相同的表,但这里只存储测试数据)。存储在这里的属性是:
    spring.datasource.url=jdbc:mysql://localhost:3306/testDB

    src>main>resources中的属性将具有:
    spring.datasource.url=jdbc:mysql://localhost:3306/actualDB

  • 在testcases上使用回滚注释,类被标记为transactional(在本例中没有单独的属性文件,两个应用程序使用相同的模式,并且测试没有持久性):

  • @SpringBootTest
    @交易的
    公共类JpatestsApplicationTests{
    @自动连线
    私人FirstTableRepo jpaRepo;
    @试验
    @回滚
    公共void testSave(){
    FirstTable firstTable1=新的FirstTable();
    第一个表1.setUid(“x”);
    第一表1.setRandom(“兰德”);
    jpaRepo.saveAndFlush(第一张表1);
    }
    }
    
    哪种方法更好?第一种方法将测试数据和实际数据保存在单独的模式中,而第二种方法保存在同一个表中,但将回滚,而不会提交到数据库