如何在java中编写junit easymock中void方法的测试方法?
我无法编写easymock或期待使用void方法。我想为Board编写测试类。请任何人帮忙。。我的课程如下所示
public class Board{
Snmp snmp;
Board(Snmp snmp){
this.snmp = new Snmp();
}
private void readTable() throws SnmpException {
ArrayList<String> boardOIDs = new ArrayList<String>();
List<List<String>> valuesList = new ArrayList<List<String>>();
List<List<String>> oidsList = new ArrayList<List<String>>();
boardOIDs.add(OID_BOARD_INDEX);
boardOIDs.add(OID_BOARDNAME);
boardOIDs.add(OID_BOARDTYPE);
//this method read and put value into valueList
snmp.snmpGetTable(boardOIDs, oidsList,valuesList);
s.o.p( "Value List size" +valuesList.size);
}
}
# 1 楼答案
你可以训练模拟者使用答案:
请注意,您需要修复Board类的构造函数,并使该方法至少默认可见,或者以任何其他方式调用它
另请参见以下答案:easymock-void-methods
# 2 楼答案
如果你想检查输出结果,你可以
然而,您的方法并不是为了方便捕获输出而设计的,因为您不会传入输出流。不过,您可以模拟
System.out.println
,并确保它得到正确的参数# 3 楼答案
构造函数不使用传入的
snmp
实例,而是创建一个新实例。你为什么这么做应该是
然后可以使用easymock创建一个模拟
Snmp
实例,并将其传递给Board
的构造函数要在easymock中使用void方法,不需要使用
expect
方法。当mock处于重播状态时,只需调用mock上的方法所以你只要说
如果需要从void方法抛出异常,可以使用
easymock's
expectLastCall()
有关更多详细信息,请参见Easymock documentation