android - 无法模拟 android.util.Patterns.EMAIL_ADDRESS.pattern()

标签 android junit4 mockk

目前我正在使用 MockK 库(版本 1.8.1)在 Android Dev 中进行单元测试,我的问题是我无法模拟 Patterns.EMAIL_ADDRESS。
每次调用此属性时,测试用例都会抛出 NPE。

我试过mockkStatic(Patterns::class) , 但@Before 方法在应用规则 every { Patterns.EMAIL_ADDRESS.pattern() } returns EMAIL_REGEX_STRING 时因 NPE 而崩溃.

我正在尝试测试的类(class):

public class EmailValidator {

private static final String EMPTY = "";
private final Context context;

@Inject
public EmailValidator(Context context) {
    this.context = context;
}

public String isValidEmail(String email) {
    if (StringUtils.isEmpty(email)) {
        return context.getString(R.string.sign_up_error_email_empty);
    }

    if (!email.matches(Patterns.EMAIL_ADDRESS.pattern())) {
        return context.getString(R.string.sign_up_error_email_validate);
    }
    return EMPTY;
}}

最佳答案

尝试使用
PatternsCompat.EMAIL_ADDRESS.pattern()
而不仅仅是
Patterns.EMAIL_ADDRESS.pattern()
这为我完成了工作。

关于android - 无法模拟 android.util.Patterns.EMAIL_ADDRESS.pattern(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51059353/

相关文章:

android - 如何从android应用程序调试共享库[单独的项目]

android - ACRA 未创建报告

java - 朱尼特 : Generate exportable reports from Junit tests

spring - 如何在@InjectMockKs 测试实例中注入(inject)实现列表?

java - Java中灰线没有解释如何查找问题?

java - 如何根据 JUnit 中的测试大小对测试进行分类

运行 Jar 后 Java Ant 无法完成任务

kotlin - 相当于 doReturn(x).when(y)... 在 mockk 中?

Android - 拍照 - 不要将照片保存在 DCIM 文件夹中