繁体   English   中英

单元测试中的可重用 CDI-Beans

[英]Resuable CDI-Beans in Unit-Tests

我有一个 JavaEE 应用程序,想在单元测试中使用 CDI。 目前我使用org.apache.openejb.junit5.RunWithApplicationComposer ,我的单元测试如下所示:

@RunWithApplicationComposer(mode = ExtensionMode.PER_EACH)
@Classes(cdi = true, value = {
    A.class,
    B.class,
    C.class,
    ...
    Example.class
})
public class ExampleTest {

    @Inject
    private Example testInstance;

    @Produces
    public A produceA() {
        ...
    }

    @Test
    public void test() {
        assertEquals(4, testInstance.add(2, 2));
    }

}

这里我只想测试Example.class ,但是要让Example.class运行, A,B,C必须是可注入bean。

我的问题是@Classes -Annotation 的可重用性。 在我的例子中,它不仅是A,B,C ,还有大约 20 个我需要进行大量单元测试的类。 我不想在每个单元测试中一次又一次地使用带有 20 个类的@Classes注释。

我已经尝试了一个带有@Classes -Annotation 的 SuperClass,它通过我的单元测试得到扩展,但这不起作用。

您知道在单元测试中制作这 20 个类的可注入 bean 的更通用和可重用的方法吗?

谢谢你的帮助:)

我不确定这是否有效,但您可以尝试抽象父测试 class 吗?

如果这不起作用,我想到的另一件事是制作一个注入所有 20 个类的虚拟 bean,然后将其放入类部分:

@ApplicationScoped
public class TestClassesConfigurationBean {
 @Inject private A a;
 @Inject private B b;
.... 20x
}

@RunWithApplicationComposer(mode = ExtensionMode.PER_EACH)
@Classes(cdi = true, value = { TestClassesConfigurationBean.class }
})
public class ExampleTest {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM