我有测试运行很慢慢,说一个测试,它导出一个大型数据库来测试内存泄漏的导出代码。我想在我平时的测试套件,有这些测试,但除非这些条件之一满足,他们应该被忽略:如何区分“运行所有测试”和“只运行此测试”?
- 测试是CI服务器上运行
- 用户已经选择了这个测试中IDE并运行它
#1的解决方案很简单:使用属性并跳过测试(如果未设置)。
但是我怎么能实现#2?
[编辑]这是Java特定的。我在Eclipse中使用JUnit 4。
我有测试运行很慢慢,说一个测试,它导出一个大型数据库来测试内存泄漏的导出代码。我想在我平时的测试套件,有这些测试,但除非这些条件之一满足,他们应该被忽略:如何区分“运行所有测试”和“只运行此测试”?
#1的解决方案很简单:使用属性并跳过测试(如果未设置)。
但是我怎么能实现#2?
[编辑]这是Java特定的。我在Eclipse中使用JUnit 4。
我有测试运行速度非常慢,说一个测试,导出一个大型数据库来测试内存泄漏的导出代码。
虽然有用,但这些不是单元测试,如单元测试标记所示。
测试是不是一个单元测试,如果:
做这些事情的测试并不差,当然值得一写。他们甚至可以使用单元测试框架编写。但是,能够将它们与真正的单元测试分开是非常重要的,以便您可以保存一组可以在您进行更改时快速运行的测试,特别是在您希望从失败测试转为通过测试的TDD循环中尽快。
如果您使用的是Makefile
,您可以使用check
目标进行真正的单元测试,并使用livecheck
目标执行这些慢速系统测试。
如何分别运行每个测试将取决于您的框架。
+1获得良好的背景信息和使用'make'的解决方案 – 2010-10-08 13:29:21
我们使用Maven,与Eclipse很好地集成。我们使用JUnit为
Test
只是后缀,并且在每一个完整的编译运行IntegrationTest
。这些只在通过命令行开关(-PintegrationTests)激活特殊的Maven配置文件时运行。的一套完整的集成测试是CI服务器上或由开发商谁明确规定了上述型材(mvn test -PintegrationTests
)每天跑三次。当然,程序员可以随时在IDE中运行单个集成测试。
这是有关部分从pom.xml
:
<profiles>
<profile>
<id>integrationTests</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/Test*.java</include>
<include>**/*Test.java</include>
<include>**/IntegrationTest*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
特定IDE,或任何? – Ash 2010-10-08 12:53:30
我使用Java,Eclipse和JUnit 4,但我会接受任何我可以采用的答案。 – 2010-10-08 13:29:57
我在这里推理一下......因为Eclipse允许你在运行配置中设置环境变量,并且如果你愿意为测试设置一个运行配置,你可以在测试中检查环境变量。正在做这样的事情,即使对于你的设置远程有用吗? – Ash 2010-10-08 13:41:40