在Java测试套件中自动包含类

时间:2012-12-06 12:26:11

标签: java testing junit junit4 suite

Junit4中的测试套件运行良好,但这里有一个障碍:

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

如果某人开发了单元测试并忘记将其包含在Suite.SuiteClasses中,那显然是个问题。

(这不是一个亟待解决的问题,因为Ant会在以后捕获但仍然存在)

所以我想知道:如果你在Eclipse项目中说过“test”文件夹,并且有一些包含类的包 - 有没有办法将它们全部自动包含在junit4测试套件中?

(是的,您可以右键单击“test”文件夹并执行Run as Junit但是由于某些原因有时会因为单独传递而导致单个测试失败,因此我对此解决方案没有太多信任,而且测试套件是很好的玩具玩; - ))。

3 个答案:

答案 0 :(得分:1)

我建议ClasspathSuite

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

答案 1 :(得分:0)

不是答案,而是评论:

  

[...]以Junit身份运行,但由于某些原因,有时单独通过[...]

原因是某些测试无法正确清理。这应该始终让你保持警惕。尝试识别一对无法在一次“运行”中执行的测试,并仔细查看第一次测试。根据我自己的经验:尽快解决这些问题(又名:现在!),否则你可能会在以后遇到非常严重的问题(通常是来自QA人员的投诉,比如“测试在我的环境中失败”)

答案 2 :(得分:0)

我不同意Andreas_D。这不是因为测试不会自行清理。好的单元测试不需要自己清理。这是因为你的一些测试取决于另一个测试的结果。你需要更好的测试和/或固定装置

然而我同意部分'现在修复它们'。如果您的测试结果不可重复,则会出现严重问题