Spring 어플리케이션의 JUnit 테스트에서 설정 메소드에 많은 데이터를 삽입하고 테스트 할 때 사용하고 싶습니다.@Rollback (false)가 SpringJUnit4ClassRunner를 사용하기 전에 작동하지 않습니다.
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))
}
}
}
그러나, 어떤이 @Before
방법으로 이루어집니다 여기에 내가 뭘하려는거야의 단순화 된 버전의 내가 @Rollback(false)
와 방법에 주석을 경우에도, 각 테스트 후 롤백 할 것으로 보인다 나는 또한 @BeforeClass
을 사용해 보았습니다. 그러나 메서드가 정적이어야하고 어떤 @Autowired
setter 메서드도 호출되기 전에 실행되므로 @BeforeClass
이 실행될 때 호출해야하는 서비스에 액세스 할 수 없습니다.
@PostConstruct
을 사용해 보았지만 트랜잭션을 사용할 수있는 문제가 있으며 트랜잭션이 시작될 때만 최대 절전 모드 세션을 사용할 수 있습니다. 이상하게 세션이 사용 가능해 보였지만 동일한 세션 내에서 두 개의 객체가 같지 않았기 때문에 Hibernate 1 차 수준 캐시가 실패한 것처럼 보였거나 각각의 작업이 개별 세션에서 발생했습니다. @BeforeTransaction
은 동일한 동작을 나타내는 것으로 보입니다.
클래스 나 메소드 레벨에서 어디에서'@ Rollback' 어노테이션을 작성 했습니까? – Ralph
@Ralph 나는'setup()'메소드'@Rollback (false)'를 시도한 다음 테스트 메소드에'@ Rollback'을 사용하여 주석을 달았습니다. –
이것을 달성 할 수있는 방법을 찾았습니까? – Arjan