5

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

奇怪的是,当我直接运行单元测试(选择测试类 - 作为 jUnit 测试运行)时,一切正常,尽管当我用测试套件尝试同样的事情时,总是有一个例外: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;
    }

}

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

4

4 回答 4

5

我在 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 {

}

测试用例更改为:

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

public class TestCase  {
@Test
    public void test1 {
        assertTrue (tmp.getTermin().equals(soll));
    }
}
于 2008-10-10T06:51:08.073 回答
4

使用 IDE 的代码完成添加导入时要小心@Test。例如,它必须是import org.junit.Test不是 import org.testng.annotations.Test。如果你错误地使用了第二个,你会得到“no runnable methods”错误。(我使用的是导入的 Intellij Idea 2017 org.junit.jupiter.api.Test!)

于 2018-03-03T20:20:18.560 回答
2

我也花了一些时间才弄清楚,但我认为这可以解决您的问题:

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

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

于 2009-06-12T09:32:29.093 回答
0

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

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

于 2008-10-10T05:51:37.570 回答