JUnit 4 を使用すると、ランナーを使用してテスト インスタンスのライフサイクルを制御できます。たとえば、微調整されたインスタンスの作成を行うメソッドを実装createTest()
しBlockJUnit4ClassRunner
ていました (私の場合は、Weld を使用して CDI 対応のインスタンスを取得します)。
JUnit 5 では、拡張機能がランナーとルールを置き換えることになっています。しかし、JUnit 4 のようにテスト インスタンスの作成に接続する方法が見つかりません。
動的テストを使用せずに、JUnit Jupiter にテスト インスタンスを作成する方法 (たとえば、Weld コンテナーを使用) を指示する方法はありますか?
これが私がJUnit 4で現在行っていることであり、Jupiterでできるようにしたいです:
public class ContainerRunner extends BlockJUnit4ClassRunner {
private WeldContainer container;
...
@Override
public Object createTest() {
return container.select(this.getTestClass().getJavaClass()).get();
}
}
以降:
@RunWith(ContainerRunner.class)
@Singleton
public class ContainedTest {
@Inject
private Logger logger; // this works
@Test
public void testSomething() {
...
}
}
洞察をありがとう。