在Eclipse中运行我的所有测试(Eclipse 3.4'Ganymede')时,在"Unrooted Tests"下列出了一个测试.我正在使用Junit 3.8,这个特殊的测试扩展了TestCase.我认为这个测试和其他测试之间没有任何区别.我不记得在Eclipse 3.3(Europa)中发生这种情况.
澄清:
我们还没有转移到JUnit 4.0,所以我们没有使用注释.我也用Google搜索,似乎大多数人都遇到了JUnit 4的问题,但我没有看到任何解决方案.此时测试通过本地和CruiseControl传递,所以我并不过分担心,但很好奇.
但是,当我第一次看到这个时,它是在一个失败的测试中,只有在与其他测试一起运行时才会失败.这让我陷入了兔子洞,寻找解决我从未找到的"无根"问题的解决方案.最终我发现了另一个没有正确拆除的测试的罪魁祸首.
我同意,它看起来像Eclipse问题.
最后我找到了解决方案.问题是您没有使用注释定义测试用例,但仍然是"旧方法".只要转换为使用注释,您就可以再次运行一次测试.
下面是一个基本测试现在应该使用注释的示例:
import static org.junit.Assert.*; // Notice the use of "static" here import org.junit.Before; import org.junit.Test; public class MyTests { // Notice we don't extent TestCases anymore @Before public void setUp() { // Note: It is not required to call this setUp() // ... } @Test public void doSomeTest() { // Note: method need not be called "testXXX" // ... assertTrue(1 == 1); } }
我也收到了"无根测试"错误消息,它神奇地消失了.我相信这是因为我使用Eclipse和Maven项目.当我向Test类添加一个新方法并给它@Test注释时,当我尝试使用"Run as Junit test"菜单选项运行该方法时,它开始收到错误消息; 然而,一旦我运行了maven构建,无根测试消息就消失了,我相信这是未来问题的解决方案.
运行maven构建,因为它将刷新JUnit正在使用的类.
如果您的类将TestCase扩展到其层次结构中的某个位置,则必须使用运行配置下拉列表中列出的JUnit 3测试运行器.使用JUnit 4 runner(默认情况下我认为)会导致出现无根测试现象.
我收到此错误是因为我重命名了我的测试方法,然后尝试通过单击相同的运行配置在Eclipse中运行测试 - 引用现在不存在的旧方法.