NPE на модульном тесте с использованием мокито - PullRequest
0 голосов
/ 04 октября 2018

Я попытался провести модульное тестирование некоторого класса утилит ниже:

public final class WalletInputValidationUtils {
private WalletInputValidationUtils() {
}

public static boolean isEmailValid(CharSequence email) {
    return Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
}

, и это тестовый класс

@RunWith(PowerMockRunner.class)
public class WalletInputValidationUtilsTest {
private static final CharSequence DUMMY_EMAIL = "email@gmail.com";

@Test
public void isEmailValidTest1() {
    Assert.assertTrue(isEmailValid(DUMMY_EMAIL));
}
}

Я получил исключение нулевого указателя в этой строке

return Patterns.EMAIL_ADDRESS.matcher(email).matches();

это трассировка стека

java.lang.NullPointerException
at kudo.mobile.app.wallet.backwardcompatibility.WalletInputValidationUtils.isEmailValid(WalletInputValidationUtils.java:14)
at kudo.mobile.app.wallet.backwardcompatibility.WalletInputValidationUtilsTest.isEmailValidTest(WalletInputValidationUtilsTest.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:316)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:89)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:97)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:300)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:131)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunne

Может кто-нибудь помочь мне это исправить?спасибо

Ответы [ 4 ]

0 голосов
/ 01 марта 2019

Только что решил, переключившись с Patterns.EMAIL_ADRESS.matcher() на PatternsCompat.EMAIL_ADRESS.matcher().Чем это должно работать.

0 голосов
/ 04 октября 2018

думаю, что это должно совпадать так:

public static boolean isEmailValid(String email) {
    Pattern pattern = Pattern.compile(Patterns.EMAIL_ADDRESS);
    Matcher matcher = pattern.matcher(email);
    return matcher.matches();
}
0 голосов
/ 20 февраля 2019

Я получал NPE, потому что Patterns.EMAIL_ADDRESS был нулевым в моих юнит-тестах.Переход на android.support.v4.util.PatternsCompat решил эту проблему

0 голосов
/ 04 октября 2018

Проверяли ли вы результат:

 Matcher m = Patterns.EMAIL_ADDRESS.matcher(email);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...