データベースエンジンが正しくありません。MYISAMを使用し、それをInnoDBに変更して解決してください。
mysqlワークベンチの使用など、データベースエンジンを表示するにはいくつかの方法があります。
Javaサンプルコード
@SpringBootTest
@RunWith(SpringRunner.class)
@Slf4j
@Transactional
public class StudentTest {
@Autowired
private StudentDAO StudentDAO;
@Test
public void test() {
Student s = new Student();
s.setStudentId("0001");
StudentDAO.save(s);
}
}
公式説明
@Rollback
トランザクションテストメソッドのトランザクションを、テストメソッドの完了後にロールバックするかどうかを示します。
の場合 true
、トランザクションはロールバックされます。それ以外の場合、トランザクションはコミットされます(も参照 )。@Commit
Spring TestContext Frameworkの統合テストのロールバック は、明示的に宣言されていない 場合でも デフォルト で行われます。true
@Rollback
無効な試み
最初はエンジンの問題を特定できなかったため、次のような情報を確認しました。
https://stackoverflow.com/questions/12626502/rollback-transaction-after-test
“ AbstractTransactionalJUnit4SpringContextTestsを拡張する”
または「関数ごとに別々に注釈「@Transactional」を追加する」
その他の
オンにする
spring.jpa.show-sql = true
同時に、ログレベルが情報に設定されます
<Root level="info">
<AppenderRef ref="RollingFile"/>
<AppenderRef ref="Console"/>
</Root>
トランザクションとロールバックのログを見ることができます
05-22-2020 14:01:26.204 INFO [メイン] [] ostctTransactionContext:テストコンテキストのトランザクション(1)を開始しました [DefaultTestContext @ 1c7f52c8 testClass = StudentTest、testInstance = com.xx.Student.StudentTest@616a370b、testMethod = test @ StudentTest、testException = [null]、
05-22-2020 14:01:26.355 INFO [メイン] [] ostctTransactionContext:テストのトランザクションをロールバックしました:[DefaultTestContext @ 1c7f52c8 testClass = StudentTest、testInstance = com.xx.Student.StudentTest@616a370b、testMethod = test @ StudentTest、 testException = [null]、