В тесте JUnit в моем приложении Spring я хотел бы вставить много данных в метод установки, а затем использовать их для тестирования.Однако все, что делается в методе @Before
, похоже, будет откатываться после каждого теста, даже если я аннотирую метод с помощью @Rollback(false)
Вот упрощенная версия того, что я пытаюсь сделать:
public class TestClass
{
@Autowired
MyService service;
@Before
public void setup()
{
if(service.getById(1) == null)
{
Thing thing = new Thing();
thing.setId(1);
service.create(new Thing(1))
}
}
}
Я также пытался использовать @BeforeClass
, но для этого требуется, чтобы метод был статическим и выполнялся до вызова любых методов установки @Autowired
, поэтому я не могу получить доступ к службам, которые янеобходимо вызвать при выполнении @BeforeClass
.
Я пытался использовать @PostConstruct
, но есть проблемы с доступностью транзакции (и моя настройка такова, что сеанс Hibernate доступен только при запуске транзакции).Кажется странным, что сеанс был доступен, но два объекта, полученные из одного и того же сеанса, не были равны, что означало, что кэш 1-го уровня в Hibernate, похоже, отказывал или каждая операция выполнялась в отдельном сеансе.@BeforeTransaction
казалось, демонстрирует то же поведение.