我打算測試一個以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