私たちは@Beforeと@Afterでアノテーションを付けられ、テストの構築/破壊を実行する多くのテストクラスを持っています。@Beforeと@Afterのアノテーションを無視するようにJUnitを設定するには
しかし、今はテストの失敗に対して、@Afterを実行する前にアクションを実行する必要があるため、私たちはテスト構築/破壊を処理するためにRuleChainを使用しています。 setUp()メソッドとtearDown()メソッドを指すだけです(ほとんどの開発者がこのコンベンションに固執していたことは幸運でした)。
問題は、JUnitはまだ@Beforeと@Afterで注釈を付けられたメソッドを呼び出すだけでなく、新しいルールでそれらを呼び出すことです。それを
は、コアJUnitのは、最も内側のfor文
org.junit.internal.runners.statements.RunAfters.evaluate
を呼び出しているのです。
@Beforeアノテーションと@Afterアノテーションをテストから削除するという選択肢が1つありますが、何百ものテストがあります。
@Beforeと@Afterの処理をどのように切り替えることができますか?
ありがとうございました。 RunWithを使用すると、素晴らしい解決策のように見えます。残念ながら、私たちのテストクラスには既に@RunWithが付いていて、BlockJUnit4ClassRunnerの代わりにTestSuiteから拡張された第2パーティーランナーを使用していますので、使用することはできません。しかし、TestClassでTestRuleアノテーションを定義し、TestClassを使用してBeforeアノテーションとAfterアノテーションを検索することで、私たちを破壊するBefore/Afterアノテーションを発見した場合、少なくともログまたは失敗することができます。 BlockJUnit4ClassRunnerの機能がより高いレベルで公開されていないことは残念です。 – William
注釈を使用してBeforeClass、Before、AfterClass、Afterなどのすべての動作をランナーに注入できるのは良いことです。 – William
ええ、フックが実装されている方法は単純なケースでうまく動作しますが、チェリーチェッカーを実行してチェリーを実行するのは難しくなります。 – glytching