2012-12-06 20 views
4

测试套件很好地运行,但是这里有一个障碍:在Java测试套件自动列入班Junit4

@RunWith(Suite.class) 
@Suite.SuiteClasses({ A.class, B.class, ...}) 

如果有人开发了一个单元测试和忘记它包括在Suite.SuiteClasses,这显然一个问题。

(这不是一个棘手的问题,因为Ant会赶上那以后,但仍然)

所以我想知道:如果你有说,在Eclipse项目的“测试”文件夹,还有一些包在它的类 - 有以某种方式将它们全部自动包含在junit4测试套件中的一种方法?

(是的,你可以右键单击“测试”文件夹,然后以Junit身份运行,但由于某些原因有时单个测试失败,而他们单独通过,所以我对此解决方案没有太多信任,再加上测试套件是很好的玩具和玩 ;-))。

+0

http://burtbeckwith.com/blog/?p=52。 – Jayan

回答

1

我建议ClasspathSuite

import org.junit.extensions.cpsuite.ClasspathSuite; 
import org.junit.runner.RunWith; 
@RunWith(ClasspathSuite.class) 
public class MySuite {} 
+0

对于一个番石榴粉丝,我已经创建了一个文件Guava ClassPath Suite,请参阅https://github.com/xmedeko/gcpsuite – xmedeko

0

不是一个答案,但更多的则评论:

[...]运行JUnit的,但有时由于某种原因失败,而他们分别通过单独的测试[...]

原因是有些测试不能正确清理。这应该总是让你保持警觉。尝试找出一对无法在一次“运行”中执行的测试,并仔细查看第一次测试。根据我自己的经验:尽快解决这些问题(又名:NOW!),否则您可能会在以后遇到非常深的问题(通常是:QA人员的投诉,例如“测试在我的环境中失败”)

+0

感谢您的提醒!尽管我很想知道为什么包含所有junit测试的测试套件都是绿色的,而右键单击/ Run As Junit不会? :-((我今天有这种情况) – mrkafk

0

我不同意Andreas_D。这不是因为测试不会自行清理。好的单元测试不必自行清理。这是因为你的一些测试依赖于另一个测试的结果。你需要更好的测试和/或夹具

但是我同意部分'现在修复它们!'。你有一个严重的问题,当你的测试结果是不可再现的