JUnit ClassLoader
で、実行するテストクラスごとに個別に使用するにはどうすればよいですか?
TestRunner
多くの静的変数を設定するライブラリのJUnit を書いています。私は基本的に、これらすべてが何であるかを知る必要なく、各テストクラス間でこれらすべてをリセットしたいと考えています。ライブラリが内部的に変更されるといつでもTestRunner
壊れてしまうので、私はフレームワークの親密な知識に結び付けられたくありません。
先に進む前に、私が本当にこれをしたいのかを絶対に明らかにしたいと思います。
StackOverflowで見つけることができる他のすべての答えは、「それをしないでください」とだけ言っていますが、これは役に立ちません。「静的変数は馬鹿げている」と答えた最初の人がドーナツを獲得します。
結局、別のスタックオーバーフローの回答に基づいて大まかに自分で作成しました(私にはうまくいきませんでした)。
現在、GitHubとMaven Centralにあります。https://github.com/BinaryTweed/quarantining-test-runner
<dependency>
<groupId>com.binarytweed</groupId>
<artifactId>quarantining-test-runner</artifactId>
<version>0.0.1</version>
</dependency>
これを使用するには、それに応じてテストクラスに注釈を付けます。
@RunWith(QuarantiningRunner.class)
@Quarantine({"com.binarytweed"})
public class MyIsolatedTest {
...
テストクラス自体を別のClassLoader
にロードする必要があるため、リンクされた回答は機能しませんでした。参照するすべてのクラスが同じローダーを使用するためです。JUnit @Test
アノテーションをparentによってロードする必要があるため、隔離は(排他的ではなく)包括的ですClassLoader
。それ以外の場合、JUnitはClass<Test>
ルックアップマップのキーとして使用するため、テスト可能なメソッドを見つけることができません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加