私はテストでwiremockを使用していますが、そのようなコード行があります:
@Rule
public WireMockRule wireMockRule = new WireMockRule(8080);
Junit 5に切り替えたいので、次の依存関係を追加しました(gradleを使用)。
testCompile('org.junit.jupiter:junit-jupiter-engine:5.1.1')
しかし、@ Ruleアノテーションをインポートしようとすると、提案はありません。 junit依存関係の別のモジュールを追加する必要がありますか?または、ルールはJunit5でサポートされていませんか?そうでない場合は、@ Ruleアノテーションを置き換えてテストを再び機能させるにはどうすればよいですか?ありがとう。
一般的な方法では、JUnit 4で@Rule
および@ClassRule
で行ったことは、 @ExtendWith
および Extension
関連付けられていることにより、JUnit 5で非常に近い機能が提供されます。
標準のJUnitライフサイクルフックとして機能しますが、Extension
クラスで抽出されます。 @Rule
と同様に、必要な数のExtension
sをテストクラスに追加できます。
この問題を処理するには、いくつかの可能なアプローチがあります。
@Rule
をExtension
に書き換えます。@BeforeEach
および@AfterEach
フックメソッドを使用して、クラスの各テストでWireMockRule
(サーバーの起動、テストの実行、サーバーの停止)によって行われる実際の処理を行います。JUnit 5の問題 で既に説明した問題に注意してください。
JUnit 4アノテーション@Rule
および@ClassRule
はJUnit 5には存在しません。基本的に、同じ機能を持つ拡張機能を実装するために使用できる新しい拡張機能モデルがあります。これらの拡張機能は、@ExtendWith
注釈。
junit-jupiter-migrationsupportモジュールでは、JUnit 4ルールのサブセットの移行サポートが制限されています。残念ながら、それはExternalResource
とVerifier
のサブクラスのみに制限されています。
WiremockがJUnitを公式にサポートする前に、いくつかの回避策があります。