让我们想象一下,有1000个类(X1 ... X1000)都在库abc.jar
中定义。
X *类使用了一些JSR-330注释,例如:
class X12 {
@Inject
Foo foo;
@Inject
Bar bar;
}
我的主要类是一个测试用例@RunWith(SpringJUnit4ClassRunner.class)
,引用的Foo
,Bar
在bean XML文件中定义良好。
问题是,我不想在任何XML文件中定义X1 ... X1000。但我想自动连接它们,例如:
X173 x173 = new X173();
但问题是,使用Java新实例,foo / bar没有连线。
这也行不通:
X173 x173 = applicationContext.getBean(X173.class);
因为没有定义X173的bean。
并且,X173也可能包含X258类的成员,它也应该是有线的。在我解决了这个问题之前,我无法弄清楚如何实现它。
答案 0 :(得分:3)
您可以使用autodetection将它们声明为Spring bean。
最明显的方法是使用Spring注释(例如@Component
)注释这些类,然后将<context:component-scan />
添加到XML中。
如果注释不是一个选项,<context:component-scan />
支持可配置的过滤器。例如,如果这些类实际上名为X1...X1000
,则可以使用regexp filter:
<context:component-scan base-package="com.example">
<context:include-filter type="regex" expression="com\.example\.X\d{1,4}"/>
</context:component-scan>
答案 1 :(得分:0)
确定。有不同类型的测试。让我们来看看它们。
在模块化测试中,您应该测试单个类并模拟它的依赖性。所以,你应该避免任何注射器。
在集成中,您应该测试一些类的交互,因此您可以像通常的应用程序一样使用注入器。