繁体   English   中英

Spring集成测试方法?

[英]Spring Integration Testing methodologies?

我正在开发没有单元测试的已建立应用程序。 我想开始为此应用程序编写测试用例。 Bean Mocking不存在,需要花费我大量时间进行设置。 因此,为了快速起步,并且由于我们根本没有任何测试用例,我正在考虑设置集成测试,一旦对所有测试覆盖范围感到满意,我将慢慢着手将其转换为真实的单元。测试(通过模拟)。 由于应用程序很大,并且加载弹簧容器需要花费大量时间,因此我想对增加周转时间提出一些建议。 我可以想到几种方法。

  • 一直运行一些轻量级的spring容器,并对该轻量级容器运行所有的单元测试用例。(或访问其applicationContext)

  • 针对实际服务器运行测试用例。(从IDE远程运行Junit)

  • 利用Spring Junit配置,并以某种方式防止为每个测试案例重新加载上下文。

我确信这个用例会在之前提出,任何见解都将受到高度赞赏。

上下文缓存是Spring的内置功能,因此,如果您的测试用例使用相同的配置文件(或文件集),Spring将不会重复重新加载上下文。 查看参考文档的“ 上下文管理和缓存”部分:

默认情况下,加载后,已配置的ApplicationContext将重新用于每个测试。 因此,每个测试套件仅产生一次安装成本,并且随后的测试执行要快得多。 在这种情况下,术语“测试套件”表示所有测试都在同一JVM中运行。

在Spring中运行测试时,可以将测试指向要运行测试的应用程序上下文配置。 因此,您不必使用生产应用程序上下文,可以进行特殊的配置进行测试。 我个人有一个“集成测试应用程序上下文”和一个“单元测试应用程序上下文”。 但是您可以进一步分解。

进行此设置的最简单方法是在超类上设置应用程序上下文,并使每个测试都从其中一个扩展。

例如。 设定:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:BaseSpringIntegrationTestContext.xml")
public abstract class BaseSpringIntegrationTest {

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:BaseSpringUnitTestContext.xml")
public abstract class BaseSpringUnitTest {

然后进行测试

public class BlahTest extends BaseSpringUnitTest  {

下一步将是弄清楚如何加快Spring环境的启动。 对于某些测试,某些大型组件可能根本不需要加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM