2016-08-17 1 views
0

Tere являются фасоль транзакционной фасоль метод WITNОжидая результат в тесте с пружинным боба

public class Bean { 
    @Transactional(propogation = REQUARED) // propogation set for read clarity 
    public save(User user); 

    @Transactional(propogation = REQUARED) 
    public List<User> getUsers(); // implementation - 
              // native query - select * users; 
              // with User.class 
} 

испытаний Класс:

class Test { 

    @Autovired 
    private Bean bean; 

    public void test() { 
      User user = getNewUser(); 
      bean.save(user); 
      Assert.assertTrue(bean.getUsers().size() = 1); //False because 
      //transaction do not commit 
      //but try it read data by sql query 
      //(not from persistence context)  
    } 
} 

Есть аннотацию @AfterTransaction для решения вопроса выше.

@AfterTransaction 
public void check() { 
    Assert.assertTrue(bean.getUsers().size() = 1); //True 
} 

Но если это можно сделать другим способом. Поскольку @AfterTransaction один для тестового класса, но мы можем иметь много методов с чеками

ответ

0

Внутри тестового класса создает private JdbcTemplate select; из импортирует import org.springframework.jdbc.core.JdbcTemplate;

Это позволит вам выполнять утверждать так: assertEquals(0, select.queryForInt("SELECT COUNT(*) from userTable where user_id=1"))

Это решение может решить вашу проблему :)