【发布时间】:2015-04-16 23:06:17
【问题描述】:
我正在使用 Spring 为游戏运行一些测试,但由于某种原因,sql 文件中的数据没有被持久化到数据库中。这是我的测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {HibernateConfigTest.class})
@Transactional
@Sql(scripts = {"api_routes.sql",
"profile.sql",
"status.sql",
"user.sql",
"game_token.sql",
"game.sql",
"message.sql"},
executionPhase = ExecutionPhase.BEFORE_TEST_METHOD)
@Sql(scripts = "delete_data.sql",
executionPhase = ExecutionPhase.AFTER_TEST_METHOD)
public class GameDaoTest {
@Autowired
private GameDao gameDao;
@Test
public void testGetGamesByTokenId() {
assertEquals(36, gameDao.getGamesByTokenId(null).size());
}
}
当我运行测试时,测试成功。然而,当我去查看数据库时,在测试期间没有任何数据存在。在我不知情的情况下,Spring 似乎正在运行一个内存数据库。
有没有办法确保数据被持久化到数据库中?
【问题讨论】:
-
我对 Spring 平台的了解还很远,但我想知道
@Sql(scripts = "delete_data.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) -
您对此有何疑惑?测试通过就好了。
标签: java spring hibernate dao spring-test