我的测试运行非常慢,比如一个导出大型数据库以测试导出内存泄漏代码的测试。我希望在我常用的测试套件中进行这些测试,但除非满足其中一个条件,否则应忽略它们:
#1的解决方案很简单:使用属性并跳过测试(如果未设置)。
但我怎么能实现#2?
[编辑]这是特定于Java的。我正在使用JUnit 4和Eclipse。
答案 0 :(得分:1)
我的测试运行速度非常慢,比如一个导出大型数据库的测试,用于测试导出内存泄漏的代码。
虽然有用,但它们不是单元测试,如单元测试标记所示。
如果出现以下情况,则测试不是单元测试:
做这些事情的测试并不坏,当然值得写。它们甚至可以使用单元测试框架编写。但是,能够将它们与真正的单元测试分开是很重要的,这样您可以保留一组测试,以便在进行更改时可以快速运行,特别是在TDD周期中,您希望从失败的测试转到通过测试尽可能快。
如果您使用的是Makefile
,那么您可以拥有check
目标用于真正的单元测试,以及livecheck
目标用于这些缓慢的系统测试。
如何单独运行每个测试取决于您的框架。
答案 1 :(得分:1)
我们使用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>