如何模拟java.net.NetworkInterface?
发布时间:2020-12-15 02:17:58 所属栏目:Java 来源:网络整理
导读:我将测试一个以 java.net.NetworkInterface列表作为参数的方法,因此我应该模拟最终的抽象类或实例化它. 关于做这些的任何想法? 方法是这样的: public void handleInterfaces(ListNetworkInterface interfaces){ for(NetworkInterface interface : interfac
我将测试一个以
java.net.NetworkInterface列表作为参数的方法,因此我应该模拟最终的抽象类或实例化它.
关于做这些的任何想法? 方法是这样的: public void handleInterfaces(List<NetworkInterface> interfaces){ for(NetworkInterface interface : interfaces){ //get interface mac address //get interface name //doSomething here; } } 为每个getter方法编写一个mockito-when有点难看,所以我想我应该用构造函数编写我自己的这个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 } 最终解决方案 解决方法
您可以使用PowerMockito来模拟java标准库最终类.
例如; @RunWith(PowerMockRunner.class) @PrepareForTest({ NetworkInterface.class }) public class NetworkInterfaceMocks { @Test public void sameClassSuccess() throws Exception { final NetworkInterface mockInterface = PowerMockito.mock(NetworkInterface.class); when(mockInterface.isUp()).thenReturn(true); assertTrue(mockInterface.isUp()); } @Test @PrepareForTest(OtherClass.class) public void differentClassSuccess() throws Exception { final NetworkInterface mockInterface = PowerMockito.mock(NetworkInterface.class); when(mockInterface.isUp()).thenReturn(true); assertTrue(new OtherClass().isUp(mockInterface)); } 在我看来,它应该只用于非常罕见和不可避免的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |