在源文件java中包含test

时间:2013-09-25 11:47:19

标签: java eclipse junit

我想在正在测试的同一源文件中编写单元测试(就像你在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());
    }
}

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

由于

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果您真的想将JUnit测试放在同一个类中,则可以创建不带参数的第二个构造函数。然而,根据java惯例,这不是你的方式。

此外,它还会使用不必要的测试用例(对于类应该执行的实际任务而言是不必要的)来填充类。如果把测试用例放在一个单独的类中是不是更好的话,你应该考虑一下。

答案 4 :(得分:0)

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