2
@SpringBootTest
と@Transactional
を組み合わせると、テストがフリーズし、決して回復しません。@SpringBootTestと@Transactionalがテストをフリーズさせます
私は問題のデモンストレーションを作成しました。
getAgain
は、@Before
によって引き起こされるユニークな制約違反のために失敗します。これを解決するために、私は通常、各テストの後に自動的に変更をロールバックするために@Transactional
above the classを含めます。しかし、これにより、テストはフリーズし、決して回復しません。
なぜこれら2つの注釈がうまく一緒に再生されないのでしょうか?
デッドロックが発生しているためです。あなたは完全なアプリケーションを起動しています( '@ SpringBootTest'と同じです)してからデータを挿入します(トランザクションはまだ開いています)。次に、コントローラを呼び出してトランザクションを開こうとすると(あなたは完全なアプリケーションを起動したと言いますが)、他のトランザクションが終了していないため、テーブルから読み取ることができません。デッドロック。 –
私はこれをどのように解決できるかに関する提案はありますか?私は、与えられたデータセットの組み込みデータベースを使用してアプリケーションをエンドツーエンドでテストしたいと考えています。 – Corey