5

4.12 リリース ノートによると、テスト クラスの静的メンバーに @Rule と @ClassRule の両方でアノテーションを付けることが可能です。

@Rule と @ClassRule の両方でアノテーションが付けられた静的メンバーが有効と見なされるようになりました。これは、単一のルールを使用して、クラスの前後 (例: 外部リソースのセットアップ/破棄) とテスト間のアクション (例: 外部リソースのリセット) を実行できることを意味します。

この機能を使用して、ファイル内のすべてのテストの開始時にリソースを初期化し、各テストの間にリソースをクリーンアップし、すべてのテストが終了した後にリソースを破棄したいと考えています。このリソースは現在、 ExternalResourceを拡張するクラスによって表されます。

私のbeforeandafterメソッドでは、「すべてのテストの前/後」と「各テストの前/後」をどのように区別できますか? これを実現するには、別の/カスタム実装を使用する必要がありTestRuleますか?

4

4 に答える 4

1

andの注釈が付けられたメソッドは各テストの前後に実行されますが、 @Beforeandの注釈が付けられたメソッドは、それぞれクラスの最初/最後のテストの前後に実行されます。@After@BeforeClass@AfterClass

a の before/after メソッドは@Rule各テストの前後に実行されますが、 a の before/after メソッドは@ClassRuleテスト クラス全体の前後に実行されます。

ハンドラー メソッドが両方のシナリオで適切に反応する限り、@Ruleまたはケースのいずれかに ExternalResource を使用できます。@ClassRuleドキュメントからわかる限り、ルール クラス メソッド内で 2 つのルール カテゴリを区別する方法はありません。両方のケースにルール クラスを使用すると、両方に同じように適用されます。

于 2015-09-03T20:05:30.567 に答える
0

@BeforeClass@Beforeまたは@AfterClassと を区別することはできません@After。この機能を追加する理由の詳細については、プル リクエストを参照してください。

于 2015-09-04T12:48:36.000 に答える