我做了一些单元测试(在测试课上)。我读过的教程说我应该为单元测试做一个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;
}
}
为什么这不起作用?
答案 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任务的蚂蚁。