如何以更少的配置加速单元测试

Posted

技术标签:

【中文标题】如何以更少的配置加速单元测试【英文标题】:How to speed up unit tests with less configuration 【发布时间】:2015-10-06 16:57:22 【问题描述】:

jhipster 的单元测试模板很棒,但是有时候,特别是在编码的时候,我需要写单元测试代码并且经常运行。但是现在单元测试会启动tomcat容器和许多其他模块,如果我想测试服务功能就不需要了。

现在测试类是这样的:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest
@Transactional
public class SomeClassTest 
    .....

如何修改它以仅初始化 Spring 容器和 DB?谢谢。

【问题讨论】:

【参考方案1】:

如果您不需要服务器,请不要让您的测试成为集成测试。如果你删除了@WebAppConfiguration@IntegrationTest,spring boot 将启动常规(即非 web 上下文)并且不会启动 Tomcat。

如果您需要更进一步,您可以禁用某些功能,通过 application-test.properties + @ActiveProfiles("test") 通过配置禁用某些东西或使用 @SpringBootApplication(或 @EnableAutoConfiguration)的 exclude 参数作为 Lukas已经说过了。

【讨论】:

【参考方案2】:

看看这个问题How to exclude *AutoConfiguration classes in Spring Boot JUnit tests? 看看这是否对你有帮助。这个想法是明确排除您在测试中不需要的自动配置,因此在您的情况下它可能是EmbeddedServletContainerAutoConfiguration

【讨论】:

以上是关于如何以更少的配置加速单元测试的主要内容,如果未能解决你的问题,请参考以下文章

Karma 单元测试 webpack:进程内存不足后返回的 API 致命错误处理程序

如何在 C++ 中以更少的空间定义类字段/方法

以更少的电池消耗获取连续的位置变化

如何进行高效的Rails单元测试

在 Visual Studio 2015 for UWP 中加速单元测试的任何方法

前端测试