Je veux tester une vue de base de données et j'utilise db-unit pour insérer des données dans des tables qui sont utilisées par vue testée et les valeurs attendues sont vues par db-unit, mais cette vue utilise certaines données d'une autre vue que je veux à la maquette, je l'ai fait un peu un script qui remplacent vue avec les données simulées, après avoir terminé la méthode d'essai vue maquette est remplacé avec vue originaleComment puis-je d'abord exécuter @After void after() à partir de junit et ensuite @ExpectedDatabase à partir de db-unit?
mais je trouve un problème, @ExpectedDatabase
est invoqué après @After void after()
méthode et test échoue.
Comment puis-je exécuter d'abord @After void after()
à partir de junit, puis @ExpectedDatabase
à partir de db-unit?
Voici mon code:
@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));
}
}
Qu'advient-il si vous remplacez '@Before 'et' @ After' avec '@ BeforeTransaction' et' @ AfterTransaction', respectivement? –
@SamBrannen J'ai essayé, mais le test échoue toujours. Je pense que l'unité db a sa propre transaction qui commence avant la transaction de printemps –
Comment configurez-vous le support de DbUnit? Du code que vous avez posté, il semble impossible que DbUnit s'exécute même. –