Я собираюсь протестировать метод, который принимает список java.net.NetworkInterface
как аргумент, и поэтому я должен высмеять окончательный абстрактный класс или создать его экземпляр. Любая идея об этом?Как mock java.net.NetworkInterface?
Метод что-то вроде этого:
public void handleInterfaces(List<NetworkInterface> interfaces){
for(NetworkInterface interface : interfaces){
//get interface mac address
//get interface name
//doSomething here;
}
}
Написание Mockito-когда для каждого метода геттерного вроде некрасиво, поэтому я думаю, что я должен написать свою собственную версию этого 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, который я должен написать еще одну оболочку для этого! Итак, я собираюсь использовать команды оболочки для извлечения адреса mac, net mask и имени интерфейса и шлюза хоста, и я не хочу использовать NetworkInterface, потому что со всеми этими ограничениями они просто предлагают «вам не разрешено коснитесь этого "! P.S: Интересно, почему ребята из Oracle одержимы окончательным абстрактом, я знаю, что они знают больше, чем я, но в этом конкретном случае NetworkInterface, почему окончательный реферат? использование единого всеобъемлющего конструктора сделает класс неизменным.
Возможно, вы можете предоставить часть своего кода и объяснить немного лучше, что вы хотите проверить, - может быть, вам будет легче помочь. –
Я не уверен, что вы можете сделать окончательный выпуск, но я бы подумал об использовании шаблона проектирования адаптера. – Enzokie
@hagrawal, вы правы, так как насмехаться над этим? – redbeard1970