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

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

奇怪的是,当我直接运行unit testing时(选择测试类 – 运行为jUnit测试)一切正常,但是当我在测试套件中尝试同样的事情时,总会出现exception:java.lang。例外:没有可运行的方法。

以下是测试套件的代码:

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; } } 

任何想法为什么这不起作用?

我没有ant的经验 – 所以我现在不用它来测试它。

在互联网上搜索似乎我混淆了旧的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)); } } 

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

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

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

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

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

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