2

いくつかのカスタム注釈に基づいてテスト ポリシーを適用する JUnit 4 に基づくテスト システムがあります。特に、メソッドに注釈を付けて、テスト システムにタイムアウトとそれらのメソッドからのリソース アクセスを強制させることができます。

たとえば、@Medium のアノテーションが付けられたテストは 60 秒以内に完了する必要があり、ネットワークにアクセスできません。

カスタム アノテーションのないテストは「小規模」テストに分類され、10 秒以内に完了する必要があり、ネットワークやファイル システムにアクセスできません (たとえば、単体テストが実際に単体テストであることを確認します)。

また、テスト システムは、中規模のテストを試みる前に、すべての小規模なテストに合格することを保証します。大規模なテストなどを試みる前に、すべての中規模のテストに合格する必要があります。

これを JUnit 4 の上に実装するのはかなり簡単で、システムのいくつかの重要な部分をカスタマイズするだけで済みました。

これを JUnit 5 に移行することを検討していますが、これを行う良い方法があるかどうかを知りたいと思っていました。新しい発見とフィルタリングのメカニズムは、テストの順序付けを本当に簡素化しますが、ランナーを削除すると、テストのサイズ設定ポリシーを適用する方法がわかりません.

注: テスト システムの知識なしに記述されたテストには小さなテスト ポリシーが適用されていることを確認する必要があるため、テスト自体にポリシーを適用しても機能しません。

カスタム テスト エンジンを作成できると思いますが、それは少しやり過ぎかもしれません。

4

1 に答える 1

2

はい、TestEngineこの目的のために習慣はやり過ぎです。

tagsへのアクセスに関しては、実装する拡張機能を介して簡単にアクセスできます。拡張コールバック メソッドはExtensionContext、タグへのアクセスを提供する (またはそのサブクラス) へのアクセスを受け取ります。を参照してくださいorg.junit.jupiter.api.extension.ExtensionContext.getTags()

テスト サイズ ポリシーを適用する方法がわかりません。

これは現在 (JUnit Jupiter 5.0 M3 の時点で) 不可能な部分ですが、うまくいけば 5.0 GA より前に、そのようなことを可能にする予定です。詳しくは157号をご覧ください。

于 2016-12-09T03:37:33.650 に答える