1

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() {
        ...
    }
}

洞察をありがとう。

4

1 に答える 1