作者 | Emmanouil Gkatziouras
翻译 | 袁思思
原文 | https://dzone.com/articles/integration-tests-with-maven
使用Maven实现单元测试是很普通的事情,我们大多数人都熟悉项目结构和单元测试所在的地方。但是,集成测试是不同,而且大多数情况下它们的需求非常不同。
例如,把单元测试运行在h2内存数据库中是可以的,但是当涉及到集成测试和复杂查询时,最好是针对实际的关系数据库执行,就像在生产中使用的那样。
考虑到上面的例子,有可能我们的集成测试有不同的配置和相关项,所以我们的集成测试的目标是将它们与其他测试分开,并分别执行它们。
关于在源目录中我们的Maven结构,我们有主要的“文件夹”和测试“文件夹”。同样,我们还会添加一个名为“it”的额外目录。“it”目录将包含一个为了Java源的Java目录和一个资源目录。我们将为测试目录使用相同的结构。
然后,我们需要向Maven提供构建代码的指令,并将其添加到我们的测试源中:
build-helper-maven-plugin
1.5
add-test-source
process-resources
add-test-source
src/it/java
下一步是命令Maven运行单元测试。为此,我们将使用Maven failsafe插件。Failsafe插件被设计用来运行集成测试,而Surefire插件是设计用来运行单元测试的。之所以选这个名字(failsafe),是因为它是surefire的同义词,它意味着当它失败时,它会以安全的方式进行。
maven-failsafe-plugin
2.15
integration-test
integration-test
verify
verify
然后执行集成测试,我们将发布:
mvn verify
如预期的那样,我们的集成测试是分开运行的。
综上所述,我们希望将集成测试与单元测试分离开来。而且,我们希望它们分开运行。这可以通过使用Maven failsafe插件实现。
你可以在GitHub上找到一个示例项目。
领取专属 10元无门槛券
私享最新 技术干货