假设我的班级有 3 个方法:
public void parent() throws Exception {}
public String child_1(String arg_1) throws IOException {}
public boolean child_2(String arg_1, String arg_2) throws SQLException {}
parent()
调用child_1()
and child_2()
,例如:
public void parent() throws Exception {
// Do some complicated stuff
child_1("str1");
// More stuff
child_2("str1", "str2");
// More stuff
}
现在,如果我已经测试了 child_1() 和 child_2() 并且我只想测试 parent(),是否可以覆盖 child_1() 和 child_2() 并只测试 parent()?像这样的东西:
MyClass myClass = new MyClass() {
@Override
public String child_1(String arg_1) throws IOException {
return "expected_string_to continue_execution";
}
@Override
public boolean child_2(String arg_1, String arg_2) throws SQLException {
return true; // return expected boolean result to continueexecution;
}
};
myClass.parent();
通过这样做,我可以轻松地测试我的 parent() 并且由于 child_1() 和 child_2() 已经在该课程的其他单元测试中进行了测试,它不会做任何作弊(至少我是这么认为的,如果我想请纠正我我错了)。此外,在现实世界中,如果 chaild_1() 和 child_2() 正在做一些复杂的事情,这种方法使测试变得容易,我们不会重复检查耗时的代码。
我的问题是,这是否是正确的方法?如果不是,那么缺点是什么,最重要的是,正确的方法是什么?如果有人可以用上面相同的例子来解释,那就太棒了。
非常感谢。