我有一个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
}
但是,这些函数在构造函数本身中调用。看起来我正在执行两次方法来检查,如果方法写得不正确,构造函数本身就会失败。测试它的正确方法是什么?
答案 0 :(得分:5)
首先,你的界面看起来很奇怪。
你知道,有一个公共方法调用另一个公共方法没有多大意义。所以这里的真正的问题正是你所描述的:你的构造函数调用m1和m2方法的事实。
构造函数调用这些方法,理想情况下它们应该是私有的;或者它们是公开的,但是构造函数不应该对它们进行调用。
从这个意义上说:答案是退后一步,仔细研究你设计的这个方面;如果可能的话,改变它!
无论如何:保持当前的设计;除了“多次”测试那些东西之外别无他法。你看:你的测试必须确保你的构造函数工作(无论ctor是否正在调用某些m1(),m2()或m3();或者都没有;但是你必须确保在类的现有实例上调用所有公共方法也是有效的!
最后:你没有调用你的方法,因为“它们存在”。每种方法都应该有明确的目的(又名合同);并且您编写测试用例以确保这些合同被搁置。