0

我想在被测试的同一个源文件中编写我的单元测试(就像你可以在 D http://dlang.org/unittest.html中做的那样)。

我还希望能够像通常使用专用测试文件一样在 eclipse 中运行测试。

在这个例子中,如果没有公共零参数构造函数,Junit 会抱怨:

public class Dummy {
    private String _name;

    public Dummy(String name) {
        _name = name;
    }

    public String name () {
        return _name;
    }

    @Test
    public void testName() throws Exception {
        assertEquals("dummy", new Dummy("dummy").name());
    }
}

关于如何将测试方法放入“真实”源代码并能够运行测试的任何建议(换句话说,如何欺骗无参数构造函数限制)?

谢谢

4

5 回答 5

1

您可以考虑经典的 TDD(基于 Kent Beck 的“示例测试驱动开发”一书),其想法不是为特定的类/方法编写测试,而是为您想要实现的功能编写测试。

这样,将测试放在生产类中确实没有意义。

于 2013-09-25T12:00:45.423 回答
0

如果您真的想将 JUnit 测试放在同一个类中,则可以创建第二个不带参数的构造函数。然而,这不是您根据 Java 约定执行此操作的方式。

它还用不必要的测试用例使类膨胀(对于类应该做的实际任务是不必要的)。如果将测试用例放在单独的类中不是更好,您也许应该考虑一下。

于 2013-09-25T11:59:54.543 回答
0

您可以编写自己的Runner而不是使用 JUnit 的默认BlockJUnit4ClassRunner。如果您需要帮助,请告诉我。

于 2013-09-26T18:02:13.500 回答
0

要运行 JUnit Test 框架,它在内部需要一个零参数构造函数来实例化它。通常,如果您没有任何构造函数,它会默认创建。但是由于您有一个带参数的构造函数,因此框架将无法实例化相应的类来执行测试用例。为避免它创建一个空白的无参数构造函数。

于 2013-09-25T11:53:47.913 回答
0

JUnit 不可能在同一个类中拥有测试方法,这也是一个非常奇怪的设计选择。好吧,如果您有一个零参数构造函数,那将是可能的,但是,测试类并不意味着是被测试的类。但是,您可以在同一个文件中创建一个测试类来执行您的测试用例。

于 2013-09-25T11:53:55.740 回答