2008-10-10 75 views
5

我做了一些单元测试(在测试类中)。我读过的教程说我应该为单元测试制作TestSuite。JUnit和junit.framework.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; 
    } 

} 

任何想法,为什么这是不工作?

回答

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 { 

} 

测试用例改为:

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

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

嗨,我做同样的事情,但是我得到`没有可运行的方法`错误 – secret 2016-02-29 09:18:58

0

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

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

2

带我了解一下,但我认为这解决了你的问题:

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

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

0

使用IDE的代码完成来添加@Test的导入时要小心。例如,它必须是import org.junit.Test而不是import org.testng.annotations.Test。如果你使用后者,你会得到“无法运行的方法”错误。 (我正在使用Intellij Idea 2017,它导入org.junit.jupiter.api.Test而不是!)

相关问题