测试方法内部方法的最佳方法是什么? (JUnit的)

时间:2016-12-02 12:23:20

标签: java testing junit

我有一个Java类A.一个构造函数调用几个方法m1,m2。

class A{

    public A(){
        m1(); 
        m2();
    ...... }

    public void m1(){...};
    public void m2(){...};
}

如何为这些方法编写测试?我通常把它们写成

class TestClass{

static A a = null;

public TestClass(){
    a = new A();
}

@Test
public testm1(){
   A.m1();
   //Some logic
}

但是,这些函数在构造函数本身中调用。看起来我正在执行两次方法来检查,如果方法写得不正确,构造函数本身就会失败。测试它的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

首先,你的界面看起来很奇怪。

你知道,有一个公共方法调用另一个公共方法没有多大意义。所以这里的真正的问题正是你所描述的:你的构造函数调用m1和m2方法的事实。

构造函数调用这些方法,理想情况下它们应该是私有的;或者它们是公开的,但是构造函数不应该对它们进行调用。

从这个意义上说:答案是退后一步,仔细研究你设计的这个方面;如果可能的话,改变它!

无论如何:保持当前的设计;除了“多次”测试那些东西之外别无他法。你看:你的测试必须确保你的构造函数工作(无论ctor是否正在调用某些m1(),m2()或m3();或者都没有;但是你必须确保在类的现有实例上调用所有公共方法也是有效的!

最后:你没有调用你的方法,因为“它们存在”。每种方法都应该有明确的目的(又名合同);并且您编写测试用例以确保这些合同被搁置。