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。