我想知道是否有办法减少我们目前为集成测试编写的样板量。
主要罪魁祸首是ContextConfiguration,我们将7个不同的字符串发送到当前。
我们的一个测试看起来像这样(删除了有效载荷代码):
@ContextConfiguration(locations = {"classpath:properties-config.xml",
"classpath:dataSources-config.xml",
"classpath:dao-config.xml",
"classpath:services-config.xml",
"classpath:ehcache-config.xml",
"classpath:test-config.xml",
"classpath:quartz-services.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
@Category(IntegrationTest.class)
public class TerminalBuntsPDFTest {
@Autowired
private JobService jobService;
@Test
public void testCode() throws SystemException {
assertTrue("Success", true);
}
}
要加载的xml文件的规范占用了大量空间。我们处于一个(非常缓慢的)从xml迁移到注释的过程中,但是在该项目中还有很多工作要做。
我们正在使用spring 3.2。
答案 0 :(得分:1)
这种模式怎么样:
@ContextConfiguration(locations = {"classpath:properties-config.xml",
"classpath:dataSources-config.xml",
"classpath:dao-config.xml",
"classpath:services-config.xml",
"classpath:ehcache-config.xml",
"classpath:test-config.xml",
"classpath:quartz-services.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
@Category(IntegrationTest.class)
public abstract class BaseTest {
}
// ....
public class TerminalBuntsPDFTest extends BaseTest {
@Autowired
private JobService jobService;
@Test
public void testCode() throws SystemException {
assertTrue("Success", true);
}
}
// ....
public class TerminalBuntsPDFTest2 extends BaseTest {}
这将允许您只在父抽象类中放置一次配置。
答案 1 :(得分:1)
基于注释的方法是创建一个Spring Configuration Java类,如下所示:
@Configuration("testConfig")
@ImportResource({
"dataSources-config.xml",
"dao-config.xml",
"services-config.xml"
})
public class TestConfiguration {
// TO create a spring managed bean
@Bean
MyBean myBean() {
return new MyBean();
}
}
然后您可以像这样注释您的测试类以加载配置:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
classes=TestConfiguration.class,
loader=AnnotationConfigContextLoader.class
)
@Category(IntegrationTest.class)
public class TerminalBuntsPDFTest {
这只是一个很好的例子,可能不会编译,但应该让你走上正确的轨道
一些相关文档:
http://www.tutorialspoint.com/spring/spring_java_based_configuration.htm