我打算测试一个以java.net.NetworkInterface
列表作为参数的方法,所以我应该嘲笑最终的抽象类或实例化它。 关于这些的任何想法?如何模拟java.net.NetworkInterface?
的方法是这样的:
public void handleInterfaces(List<NetworkInterface> interfaces){
for(NetworkInterface interface : interfaces){
//get interface mac address
//get interface name
//doSomething here;
}
}
编写的Mockito,当每一个getter方法是一种丑陋的,所以我觉得我应该写我自己的这个POJO类的版本有一个构造函数。在这之前,我想知道是否有更好的方案,只是做这样的事情:
NetworkInterface mockedInterface = instantiateTheInterface("eth1",192.168.1.1,theMacAddress);
我坚持使用规则“不使用powermockito过”,所以我只是实现了一个包装类,我想它的最彻底的方法:
public class NetworkInterfaceWrapper{
private NetworkInterface networkInterface;
public NetworkInterfaceWrapper(NetworkInterface networkInterface){
this.networkInterface = networkInterface;
}
public String getName(){
return networkInterface.getName();
}
...and so on for all Getters i've used from NetworkInterface
}
最终解决 事实证明,存在NetworkInterface的另一个恼人的对象,被称为InterfaceAddress我应该写另一个包装为! 因此,我打算使用shell命令来检索主机的mac地址,网络掩码和接口名称以及网关,并且我不想使用NetworkInterface,因为所有这些限制都只是建议“您不允许触摸这个“! P.S:我想知道为什么甲骨文的人都沉迷于最终的抽象,我知道他们知道的比我更多,但在NetworkInterface的这种特殊情况下,为什么最终抽象?使用单一的综合构造函数将使类,不可变
也许你可以提供一些你的代码,并更好地解释一下你想测试的东西 - 然后可能会更容易帮助你。 –
我不确定您是否可以模拟最终的课程,但我会考虑使用适配器设计模式。 – Enzokie
@hagrawal你是对的,那么如何嘲笑它呢? – redbeard1970