Sas*_*ank 1 java testing junit
我有一个Java类A.一个构造函数调用几个方法m1,m2.
class A{
public A(){
m1();
m2();
...... }
public void m1(){...};
public void m2(){...};
}
Run Code Online (Sandbox Code Playgroud)
如何为这些方法编写测试?我通常把它们写成
class TestClass{
static A a = null;
public TestClass(){
a = new A();
}
@Test
public testm1(){
A.m1();
//Some logic
}
Run Code Online (Sandbox Code Playgroud)
但是,这些函数在构造函数本身中调用.看起来我正在执行两次方法来检查,如果方法写得不正确,构造函数本身就会失败.测试它的正确方法是什么?
首先,你的界面看起来很奇怪.
你看,有一个公共方法调用另一个公共方法没有多大意义.所以这里真正的问题正是你所描述的:你的构造函数调用m1和m2方法的事实.
构造函数要么调用那些方法,那么理想情况下它们应该是私有的; 或者它们是公开的,但是构造函数不应该对它们进行调用.
在这个意义上:答案是退后一步,仔细研究你设计的这个方面; 如果可能的话,改变一下!
在任何情况下:当你保持当前的设计; 除了"多次"测试那些东西之外别无他法.你看:你的测试必须确保你的构造函数工作(无论ctor是否正在调用某些m1(),m2()或m3();或者都没有; 但是你必须确保在类的现有实例上调用所有公共方法也是有效的!
最后:你没有调用你的方法,因为"它们存在".每种方法都应该有明确的目的(即合同); 并且您编写测试用例以确保这些合同被搁置.
归档时间: |
|
查看次数: |
1072 次 |
最近记录: |