0
문제점이 있으며 연구 2 일 후에 솔루션을 찾을 수 없습니다. 지금까지 간단한 응용 프로그램을 가지고 테이블에서 모든 데이터를 읽고이를위한 통합 테스트를 작성하려고했습니다.통합 테스트가 끝나기 전에 Sql 절이 롤백 됨
로그에서@Transactional
@SpringBootTest
@ActiveProfiles("integrationTest")
class StockFacadeIT extends Specification {
@Autowired
StockFacadeImpl stockFacade
@Autowired
DSLContext dslContext
@Sql(scripts = "/add_sample_stocks.sql")
def 'should return list of ticker in correct order'() {
when:
def tickers = stockFacade.loadAllTickers(dslContext)
println "when cluase"
then:
println "then cluase"
tickers.getAt(0) == 'abc'
tickers.getAt(1) == 'gpw'
tickers.getAt(2) == 'kgh'
tickers.getAt(3) == 'tpe'
}
}
내가 볼 :
2017-11-06 21:30:09.478 INFO 21124 --- [ main] o.s.t.c.transaction.TransactionContext : Began transaction (1) for test context [[email protected] testClass = StockFacadeIT, testInstance = [email protected], testMethod = [email protected], [...] rollback [true]
2017-11-06 21:30:09.478 INFO 21124 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executing SQL script from class path resource [add_sample_stocks.sql]
2017-11-06 21:30:09.478 INFO 21124 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executed SQL script from class path resource [add_sample_stocks.sql] in 0 ms.
2017-11-06 21:30:09.712 INFO 21124 --- [ main] org.jooq.Constants :
when cluase
then cluase
2017-11-06 21:30:09.869 INFO 21124 --- [ main] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test context [[email protected] testClass = StockFacadeIT, testInstance = [email protected], testMethod = [email protected], testException = Condition not satisfied:
그래서 테스트 후에 실행되는 트랜잭션 테스트 및 rolback 전에 시작 참조 로그 관점에서 ("다음 절"여기
내 테스트입니다). 그러나 테스트는 beacuase 데이터베이스를 통과하지 못합니다. @Transactional 어노테이션을 지우면 통과했지만 삽입 된 레코드는 DB에 머물렀다. 여기서 내가 뭘 잘못하고 있니?
때로는 값을 표시하기 위해 트랜잭션을 플러시 할 필요가 있습니다. –