4

JUnit Jupiter( )でパラメータ化されたテストを行う方法はありますJunit5か?

@RunWith(Parameterized.class)

バックグラウンド:

インターフェイスのjunitテストを作成する方法は?JUnit5を使用して、ここで回答したテストケースを実装したいと考えていました。しかし、Jupiter パッケージで同じクラスが見つかりませんでした。

試み:

代替品をさらに調べると、移行のヒントに記載されているように、拡張機能が @RunWith を置き換えることがわかりました

@RunWith は存在しなくなりました。@ExtendWith に置き換えられました。

CustomExtensionここのサンプルで提供されているようにMockitoExtensionを定義しようとしましたが、クラスParameterizedのインスタンスを使用することに成功しませんでした。

でそれを実装するクラスのパラメーター化されたインスタンスを使用してインターフェイスをテストする方法についての提案を楽しみにしていますJUnit5

4

4 に答える 4

4

2017 年 1 月 9 日現在、JUnit 5 はパラメーター化されたテスト自体をサポートしていませんが、その機能の作業が進行中です。動的テストで同様のことを達成できる場合があることに注意してください。

とは言っても、私はインターフェイス テストを実装するための両方の悪い方法を検討しますが、JUnit Jupiter は 2 つのより良いアプローチを提供します。

  1. @Test注釈付きインターフェースのデフォルトメソッドが実行されます。したがって、実稼働インターフェースがある場合は、デフォルトのメソッドを使用して必要なものすべてをテストするInterfaceインターフェースを作成できます。InterfaceTestすべてImpl implements Interfaceの場合、ImplTest implements InterfaceTest.
  2. より柔軟性が必要Interfaceで、抽象クラスにのテストを実装したい場合AbstractInterfaceTestは、それも同様に実行してから、 extendsでネストされたテスト クラスを使用できます。ImplTestAbstractInterfaceTest

これらのアプローチは両方とも、インターフェイスのテストがインターフェイスを実装するクラスを認識しないことを保証します。これは、リンクした回答の大きな欠点です。

于 2017-01-09T14:51:16.830 に答える