[英]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.