我使用 HSQLDB 进行测试。问题是,当我在init()方法中添加一些数据时,我只能从首先运行的测试中获取该数据。
@Before
public void init() {
if(isRun)
return;
isRun = true;
Role role = new Role();
role.setId(1);
role.setType("User");
roleDAO.save(role);
User user = new User();
user.setCredits(1000);
user.setEmail("User@test.com");
user.setUsername("User");
user.setPassword("qwerty");
user.setRoles(new HashSet<Role>(Arrays.asList(roleDAO.findById(1))));
userDAO.save(user);
User user2 = new User();
user2.setCredits(1000);
user2.setEmail("User2@test.com");
user2.setUsername("User2");
user2.setPassword("qwerty");
user2.setRoles(new HashSet<Role>(Arrays.asList(roleDAO.findById(1))));
userDAO.save(user2);
}
@Test
public void findUserByIdTest() {
User user = userDAO.findByUsername("User");
assertEquals(userDAO.findById(user.getId()), user);
}
@Test
public void addUserTest() {
User user = new User();
user.setCredits(1000);
user.setEmail("Antony@test.com");
user.setPassword("qwerty");
user.setUsername("Antony");
user.setRoles(new HashSet<Role>(Arrays.asList(roleDAO.findById(1))));
userDAO.save(user);
assertEquals(userDAO.findByUsername("Antony"), user);
}
@Test
public void updateUserTest() {
User user = userDAO.findByUsername("User");
user.setCredits(0);
assertEquals(userDAO.findByUsername("User").getCredits(), (Integer) 0);
}
@Test
public void removeUserTest() {
userDAO.remove(userDAO.findByUsername("User"));
assertNull(userDAO.findByUsername("User"));
}
碰巧该removeUserTest()方法总是首先运行,当我findAll()数据时,我会看到我在init()方法中设置的数据。之后,其他测试方法运行,但如果我在findAll()那里运行,它只会返回任何内容,这意味着不存在数据。
另外,我已经设置了 hibernate.hbm2ddl.auto=create。我在这里错过了什么?为什么我可以在第一个运行方法中获取数据,但在其他方法中数据就消失了。
holdtom
相关分类