Я использую 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.
Что мне здесь не хватает? Почему я могу получить данные в первом запущенном методе, но в других данные просто исчезают.