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前に開始参照ログの視点から(「then節」ここ
は私のテストです)。しかし、テストはbeacuaseデータベースが空ではありません。 @Transactionalアノテーションを削除すると、それは渡されましたが、挿入されたレコードはDBに残っていました。私はここで間違って何をしていますか?
時々、値を表示するためにトランザクションをフラッシュする必要があります。 –