Geo*_*met 16 eclipse junit intellij-idea maven-3 jenkins
我有一套非常慢的测试,需要一周时间才能运行.(他们实际上运行了一些不停的代码大约一周).
当然,没有开发人员(甚至是默认的构建作业)想要运行这些测试.只有特定的单独构建作业才有时间运行它们.因此,默认情况下需要禁用这些测试.
JUnit的类别似乎是完美的:我用那些注释那些慢速测试@Category(SlowTests.class).问题是它们仍在运行,因为:
如何在不使用显式TestSuite的情况下,默认情况下排除一类慢速JUnit测试?
这个工作在默认情况下,在Maven中,的IntelliJ和Eclipse:
import static org.junit.Assume.assumeTrue;
@Test
public void mySlowTest() {
assumeTrue("true".equals(System.getProperty("runSlowTests")));
...
}
Run Code Online (Sandbox Code Playgroud)
无论如何要运行它们,只需添加VM参数即可-DrunSlowTests=true.
从语义上讲,这是完全错误的.但它的工作原理:)
据我所知,默认情况下无法阻止Eclipse运行某些测试.
从Maven运行某些类别很容易使用
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<excludedGroups>${tests.exclude}</excludedGroups>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
然后tests.exclude在某些maven配置文件中定义.
在JUnit中维护测试套件对于当前版本的JUnit来说确实是太多了,正如我在博文中所写的那样.我还解释了一个名为cpsuite的库如何自动为您执行Suite管理:
@RunWith(ClasspathSuite.class) // Loads all unit tests it finds on the classpath
@ExcludeBaseTypeFilter(SlowTest.class) // Excludes tests that inherit SlowTest
public class FastTests {}
Run Code Online (Sandbox Code Playgroud)
但是,在这两种方法中,Eclipse默认情况下仍然只运行带有@Test注释的所有Java文件.
| 归档时间: |
|
| 查看次数: |
4351 次 |
| 最近记录: |