如何以更少的配置加速单元测试
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 致命错误处理程序