在集成测试

时间:2015-11-18 19:32:44

标签: spring

我正在使用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中。

1 个答案:

答案 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);
}