2017-01-10 8 views
0

IDE: Android Studio 2.2.2 | Jmockit: 2.1 | Java: 1.8.0_102-b14Jmockit: Нельзя издеваться над методом toString net.android.Uri class

Я попытался издеваться над методом toString() класса net.android.Uri. Весь метод в этом классе может высмеять OK, но toString().

@Test 
public void method(@Mocked final Uri uri) throws Exception { 
    new NonStrictExpectations() { 
      { 
       uri.getHost(); 
       result = "sendViewLog"; 
       uri.getAuthority(); 
       result = "getAuthority"; 
       uri.getEncodedFragment(); 
       result = "getEncodedFragment"; 
       uri.getPort(); 
       result = 8080; 
       uri.toString(); // <------- 
       result = "helloWorld"; 
      } 
     };  

    sut.method(); 
} 

Результат: Но ToString() возвращает нулевое значение, все выше методы были издевались. Не могли бы вы дать мне решение проблемы решить эту проблему.

PS1: Я понял, что когда я нахожусь на toString метод внутри блока ожиданий. Он показывает это предупреждающее сообщение:

Сообщает о любых вызовах определенных методов, в которых результат этого вызова игнорируется. Оба метода, указанные в настройках инспекции, и методы , аннотированные с org.jetbrains.annotations.Contract (pure = true) . Для многих методов игнорирование результата отлично законно, но для некоторых методов это почти наверняка ошибка. Примерами методов, в которых игнорирование результата вызова, вероятно, будет , будет ошибка: java.io.inputStream.read(), которая возвращает количество фактически прочитанных байтов, любой метод на java.lang.String или java .math.BigInteger, так как все эти методы свободны от побочных эффектов и таким образом бессмысленны, если их игнорировать.

PS2: Когда я проверяю нулевой Ури, например, она проходит. Но код от клиента, который я хочу, чтобы проверить, является uri.toString(). Содержит ("/ видео") Причина uri.toString() == NULL, так содержит ("/ видео") выбрасывает исключение NullPointerException.

ответ

Смежные вопросы