【发布时间】:2018-10-04 03:31:50
【问题描述】:
我尝试对一些 util 类进行单元测试,如下:
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
谁能帮我解决这个问题?谢谢
【问题讨论】:
-
你需要显示你的堆栈跟踪以及这个类
Patterns.EMAIL_ADDRESS的内容是什么。 -
@GMsoF 更新问题,Patterns.EMAIL_ADDRESS 其实是 android.util 包developer.android.com/reference/android/util/Patterns
-
你能在你的方法中打印出这三个对象吗
isEmailValid: 1)Patterns.EMAIL_ADDRESS2)Patterns.EMAIL_ADDRESS.matcher(email)3)email -
1. Nullpointer 异常 2. Nullpointer 异常 3. "email@gmail.com" @GMsoF
-
您是否尝试使用 PowerMock 模拟
Patterns类?我认为你需要分享你的整个/完整的源文件,要么你做错了模拟,要么你错误地导入了类。
标签: java android unit-testing mockito