JUnit和junit.framework.TestSuite - 没有可运行的方法

时间:2008-10-10 05:28:08

标签: java unit-testing junit

我做了一些单元测试(在测试课上)。我读过的教程说我应该为单元测试做一个TestSuite。

奇怪的是,当我直接运行单元测试时(选择测试类 - 运行为jUnit测试)一切正常,但是当我在测试套件中尝试同样的事情时,总会有一个异常:java .lang.Exception:没有可运行的方法。

以下是测试套件的代码:

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {

public static Test suite() {
    TestSuite suite = new TestSuite("Test suite for com.xxx.yyyy.test");
    //$JUnit-BEGIN$
    suite.addTestSuite(TestCase.class);
    //$JUnit-END$
    return suite;
    }

}

为什么这不起作用?

4 个答案:

答案 0 :(得分:5)

我没有蚂蚁的经验 - 所以我现在不用它来测试它。

在互联网上搜索我似乎混淆了旧的jUnit 3.8和jUnit 4.0行为。 现在尝试一种使用“新行为”的方法

编辑


现在它起作用了:

AllTest更改为:

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;


@RunWith(value=Suite.class)
@SuiteClasses(value={TestCase.class})
public class AllTests {

}

TestCase改为:

import static org.junit.Assert.assertTrue;
import org.junit.Test;

public class TestCase  {
@Test
    public void test1 {
        assertTrue (tmp.getTermin().equals(soll));
    }
}

答案 1 :(得分:2)

我有点想弄清楚,但我认为这解决了你的问题:

你正在做一个suite.addTestSuite(TestCase.class),你应该做一个suite.addTest(TestCase.class)。

您还可以向测试套件添加测试套件,以创建整个测试套件层次结构。在这种情况下,您将不得不使用suite.addTest()。但请注意,然后使用.suite()而不是.class:suite.addTest(MyTestSuite。 suite())!

答案 2 :(得分:1)

使用IDE的代码完成时要小心添加@Test的导入。例如,它必须是import org.junit.Test不是 import org.testng.annotations.Test。如果您错误地使用了第二个,那么您将获得"没有可运行的方法"错误。 (我使用Intellij Idea 2017导入org.junit.jupiter.api.Test代替!)

答案 3 :(得分:0)

当然,它不起作用,因为你没有告诉测试套件你的测试类是什么。

但我想知道为什么你没有使用“经典方式”来构建测试套件,这是使用jUnit的ant任务的蚂蚁。