我正在使用spring进行集成测试。
我有AppA。这确实有要加载bean属性的属性文件。对于单元测试,我创建了AppATestContext并使用@propertySource添加了这个属性文件。该AppA的单元测试工作正常。
我已将AppA-test.jar包含在BigApp中。我正在尝试为BigApp编写单元测试。我已将AppATestContext包含在BigApp测试上下文中。现在当我运行bigApp Unit测试时,我得到“无法解决占位符错误”。
为什么这样,AppAtestContext应该加载具有正确属性的bean?我失踪的地方。
同时,如果我将AppA的属性文件包含在BigApp的占位符配置器中,它就可以正常工作。
更新
AppAtestContext.java
@PropertySource("app.properties")
class AppTestContext{
//propertyPlaceholderConfigurer bean declaration.
}
BigAppTestContext.xml
<bean class="AppAtestContext.java"/>
BigAppTest.java
@ContextHierarchy{@ContextConfiguration={BigAppTestContext.xml})
class SomeTest{
}
此测试不会将app.properties放入AppA项目中定义的bean中。
答案 0 :(得分:1)
由于您没有提供任何代码,我将提供一般性答案......
我的所有测试都使用此配置运行,以确保隔离是完美的:
@RunWith(SpringJUnit4ClassRunner.class)
@Configurable
@ImportResource({ "classpath:/testContext-basic.xml" })
@ContextConfiguration(classes = { MyTest.class, AnyDependancy.class })
确保在上下文中包含您的测试,以便Spring扫描bean。
testContext-basic只是:
<context:annotation-config />
然后你可以用以下方式模拟你的豆子:
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Bean
public MyMock getMyMock() {
return Mockito.mock(MyMock.class);
}