Spring 如何在使用Flyway运行JUnit测试方法后清理两个数据库

Spring 如何在使用Flyway运行JUnit测试方法后清理两个数据库,spring,flyway,Spring,Flyway,我有一个JUnit测试方法,它调用两个不同的服务,两个服务都使用不同的数据源运行,当然还有两个事务管理器 所以我将Flyway配置为使用H2数据库,并实现了JUnit测试方法,如下所示 @RunWith(SpringJUnit4ClassRunner.class) @Transactional public class DataControllerTest extends BaseIntegrationTest { @Test public void testDataSave(

我有一个JUnit测试方法,它调用两个不同的服务,两个服务都使用不同的数据源运行,当然还有两个事务管理器

所以我将Flyway配置为使用H2数据库,并实现了JUnit测试方法,如下所示

@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class DataControllerTest extends BaseIntegrationTest {

    @Test
    public void testDataSave() throws Exception {
      // test code to call controller  which internally calls two services.
assertEquals(1, JdbcTestUtils.countRowsInTable(this.jdbcTemplate, "Database1Table1"));
assertEquals(1, JdbcTestUtils.countRowsInTable(this.anotherjdbcTemplate, "Database2Table1"));
}
}
<bean id="txManager2"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="anotherDataSource" />
</bean>

<tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
        <tx:method name="*" />
    </tx:attributes>
</tx:advice>
所以我的问题是这个测试方法正在H2数据库中创建一些记录,我想在运行这个测试之后清除这些数据

 <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource1" />
    </bean>

    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>

和其他在不同数据源上工作的事务管理器配置如下

@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class DataControllerTest extends BaseIntegrationTest {

    @Test
    public void testDataSave() throws Exception {
      // test code to call controller  which internally calls two services.
assertEquals(1, JdbcTestUtils.countRowsInTable(this.jdbcTemplate, "Database1Table1"));
assertEquals(1, JdbcTestUtils.countRowsInTable(this.anotherjdbcTemplate, "Database2Table1"));
}
}
<bean id="txManager2"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="anotherDataSource" />
</bean>

<tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
        <tx:method name="*" />
    </tx:attributes>
</tx:advice>

因为我将这个测试类作为事务类提供,所以它会在每次测试方法运行后清理数据库。 但目前它只清理一个数据库。但是我想清理另一个数据库,它是另一个数据源的一部分

我需要如何继续这样做。。? 如果可能,以及如何在@Transactional annotation中提及这两个事务管理器