5

ここhttps://stackoverflow.com/a/52968130/10894456 では、 @DataJpaTest @SpringBootTest を 1 つのアプリケーションに混在させてはならない理由がよく説明されています。

しかし、とにかく MVC SpringBoot アプリケーションのすべてのレイヤーをテストする必要があるケースについてはほとんど説明しませんでした (私の考えでは、1 つまたは別のレイヤーだけでなく、両方、さらにはすべてのレイヤーをテストするのは自然なことですよね?)

そのため、@DataJpaTest ではなく @AutoConfigureTestDatabase を使用する解決策が提案されましたが、ジョブは完了しませんでした (((

私の質問は次のとおりです。 @AutoConfigureTestDatabase を使用するのは適切な解決策ですか? はいの場合、詳細を説明してください。いいえの場合は、より適切な解決策を提案してください、ありがとう

4

2 に答える 2

9

データベースがメモリ内にあることを除いて完全なアプリケーションが必要であると仮定すると、@SpringBootTest と @AutoConfigureTestDatabase を組み合わせることは適切なソリューションです。

@DataJpaTest のドキュメントにも記載されています。

完全なアプリケーション構成をロードするが、組み込みデータベースを使用する場合は、このアノテーションではなく @AutoConfigureTestDatabase と組み合わせた @SpringBootTest を検討する必要があります。

于 2019-04-24T20:48:12.327 に答える
1

私はそれを使用して@AutoConfigureTestDatabaseみましたが、うまくいきませんでした。その後、このSpring H2 Test DBが各テストの前にリセットされず、追加が機能することがわかりまし@Transactionalた!

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Application.class)
@WebAppConfiguration
@Transactional
public class ClippingControllerTest {

関連する質問:

  1. Junit 5 を使用して Spring ブート 2.1.0.M4 で @DataJpaTest を使用して Spring CrudRepository をテストする方法
  2. テスト中のエラー: テスト クラスの @BootstrapWith の複数の宣言が見つかりました
  3. Junit テスト後のデータベースのクリーンアップ

関連記事:

  1. https://brightinventions.pl/blog/clear-database-in-spring-boot-tests/
  2. https://medium.com/@dSebastien/cleaning-up-database-tables-after-each-integration-test-method-with-spring-boot-2-and-kotlin-7279abcdd5cc
  3. https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing
于 2020-07-19T06:52:22.840 に答える