java在方法内部测试方法的最佳方法是什么?(朱尼特)
我有一个Java类a。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 楼答案
首先,你的界面看起来很奇怪
你看,让一个公共方法调用另一个公共方法没有多大意义。所以这里的real问题正是您所描述的:您的构造函数正在调用m1和m2方法
要么构造函数调用这些方法,那么理想情况下它们应该是私有的;或者它们是公共的,但不应该由构造器负责调用它们
从这个意义上说:答案是退后一步,仔细审视你设计的这一方面;如果可能的话,改变它
在任何情况下:当您保持当前设计时;除了“多次”测试这些东西之外,别无其他方法。你看:你的测试必须确保你的构造函数工作(不管这个构造函数是调用一些m1()、m2()还是m3();或者这些都没有);但是,您必须确保在类的现有实例上调用所有公共方法也有效
最后:你不调用你的方法,因为“它们存在”。每种方法都应该有明确的目的(又名合同);您编写测试用例以确保这些合同得到履行