我想测试一个数据库视图,我使用 db-unit 将数据插入到测试视图使用的表中,而预期值表单视图是由 db-unit 完成的,但是这个视图使用了另一个我想模拟的视图中的一些数据,我做了一些用模拟数据替换视图的脚本,在完成测试方法后,模拟视图被替换为原始视图
但是我发现一个问题,@ExpectedDatabase
是在方法之后调用@After void after()
,并且测试失败。
如何@After void after()
先从 junit 执行,然后再@ExpectedDatabase
从 db-unit 执行?
这是我的代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ApplicationConfigTest.class)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener. DirtiesContextTestExecutionListener.class })
public class ClassTest {
private static final String MOCK_REOURCE_PATH = "classpath:sql/mock_view.sql";
private static final String ORIGINAL_REOURCE_PATH = "classpath:sql/original_view.sql";
@Autowired
private ApplicationContext applicationContext;
@Before
public void init() {
ScriptUtils.executeSqlScript((DataSource) applicationContext.getBean("dataSource").getConnection(), applicationContext.getReource(MOCK_REOURCE_PATH ));
}
@Test
@DatabaseSetup("classpath:sample-data.xml")
@ExpectedDatabase(assertionMode = NON_STRICT, value = "classpath:expected-data.xml")
public void testView() {
}
@After
public void after() {
ScriptUtils.executeSqlScript((DataSource) applicationContext.getBean("dataSource").getConnection(), applicationContext.getReource(ORIGINAL_REOURCE_PATH ));
}
}