Я начинающий в тестировании Android с Mockito - PullRequest
0 голосов
/ 30 июня 2019

Я хочу проверить этот метод, используя mockito и unit-тестирование

открытый класс CurrentIP {

public static String getIPAddress() {
    try {
        List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
        for (NetworkInterface intf : interfaces) {
            List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
            for (InetAddress addr : addrs) {
                if (!addr.isLoopbackAddress()) {
                    String sAddr = addr.getHostAddress();
                    boolean isIPv4 = sAddr.indexOf(':') < 0;
                    if (isIPv4)
                        return sAddr;
                }
            }
        }
    } catch (Exception ignored) {
    } // for now eat exceptions
    return "";
}

1 Ответ

0 голосов
/ 01 июля 2019

Создать класс IpAddressProvider и NetworkInterfaceProvider.

Пусть NetworkInterfaceProvider имеет один метод getNetworkInterfaces(), который возвращает List<NetworkInterfaces> из NetworkInterface.

Пусть NetworkInterfaceProvider будет зависимостью IpAddressProvider, которая передается через конструктор и сохраняется в закрытом поле ipAddressProvider.

Пусть IpAddressProvider имеет открытый метод getIPAddress(), в котором он вызывает ipAddressProvider.getNetworkInterfaces() и выполняет обработку, которую вы выполняете в опубликованном вами статическом методе.

Теперь вы можете протестировать метод getIPAddress из IpAddressProvider, предоставив фальшивый экземпляр NetworkInterfaceProvider, где вы предоставляете фиктивный список NetworkInterfaces, которые вы контролируете.

mockedIpAddressProvider = Mockito.mock(NetworkInterfaceProvider.class);
ipAddressProviderWhichYouWantToTest = IpAddressProvider(mockedIpAddressProvider);

Например:

В своем тесте вы жестко закодировали свой поддельный экземпляр NetworkInterfaceProvider, чтобы получить пустой список.

Mockito.when(mockedIpAddressProvider.getNetworkInterfaces()).thenReturn(emptyList)

Тогда вы ожидаете, что getIPAddress() метод вернет пустую строку

assertEquals("",ipAddressProviderWhichYouWantToTest.getIPAddress());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...