SpringRunner対SpringBootTest


11

単体テストでは、@Runwith(SpringRunner.class)&の違いは何@SpringBootTestですか?

それぞれの使用例を説明していただけますか?


1
さまざまなドキュメントを読みましたか?まだ不明な点は何ですか?
jonrsharpe

明らかな違いは、春のブートテスト対春のテストですが、それは非常に広範な問題だ
user7294900

SpringRunnerに加えて@SpringBootTestをいつ使用すればよいか理解できます。
zouari

回答:


10

@RunWith(SpringRunner.class): junitテスト中@Autowire@MockBeanなどのようなスプリングブート機能を有効にするには、このアノテーションが必要です。

Spring Bootテスト機能とJUnit間のブリッジを提供するために使用されます。JUnitテストでSpring Bootテスト機能を使用している場合は常に、この注釈が必要になります。

@SpringBootTest:このアノテーションは、エンドツーエンドの統合テストのために完全なアプリケーションコンテキストをロードするために使用されます

@SpringBootTestアノテーションは、コンテナー全体をブートストラップする必要がある場合に使用できます。注釈は、テストで利用されるApplicationContextを作成することによって機能します。

これは、両方のシナリオの明確な例を含む記事です。


1

spring.ioから:

@RunWith(SpringRunner.class)Springのテストサポートを使用して実行するようJUnitに指示します。SpringRunnerはの新しい名前ですSpringJUnit4ClassRunner。見た目が少し簡単です。

@SpringBootTestは、「Spring Bootのサポートを備えたブートストラップ」と言っています(たとえばapplication.properties、すべてのSpring Bootの良さをロードしてくれます)

したがって、統合テストでSpring Bootがロードするものすべてが必要ない場合は、 @SpringBootTest


0

@RunWithは、テストランナーを使用するためのJUnit 4の古いアノテーションです。JUnit 5(Jupiter)を使用している場合は、@ ExtendWithを使用してJUnit拡張機能を使用する必要があります

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testingを参照して ください

「JUnit 4を使用している場合は、テストに@RunWith(SpringRunner.class)も追加することを忘れないでください。そうしないと、注釈は無視されます。JUnit5を使用している場合は、同等の@ExtendWith(を追加する必要はありません。 SpringExtension.class)として、@ SpringBootTestと他の@…Testアノテーションはすでにアノテーションが付けられています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.