首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Patterns.EMAIL_ADDRESS返回null

Patterns.EMAIL_ADDRESS返回null
EN

Stack Overflow用户
提问于 2018-04-10 22:53:00
回答 2查看 1.1K关注 0票数 0
代码语言:javascript
复制
@RunWith(MockitoJUnitRunner.Silent.class)
    public class LoginActivityTest {

        @InjectMocks
        LoginActivity loginActivity;

        private Pattern emailPattern;

        @Before
        public void createLogin(){
            this.emailPattern = Patterns.EMAIL_ADDRESS;
        }

        @Test
        public void checkValidation(){
            mock(LoginActivity.class);
            UserVO userVO = new UserVO();
            userVO.setEmailID("invalid");
            userVO.setPassword("a");

            boolean b = loginActivity.validatesFields(userVO);

            assertFalse(b);

        }
    }

this.emailPattern = Patterns.EMAIL_ADDRESS;这是在MockitoJunitTestClass中创建空指针对象。但是,当我在Activity上运行它时,它被正确地初始化了。

EN

回答 2

Stack Overflow用户

发布于 2019-06-06 01:03:13

我遇到了类似的问题,因为这只是一个简单的测试,但当我添加@RunWith(AndroidJUnit4::class)时,问题就解决了。检查这是否是必须使用Android资源运行的测试。

票数 2
EN

Stack Overflow用户

发布于 2018-04-24 06:32:19

我对你的测试有点迷惑:

你在嘲笑LoginActivity.class,但没有用它来设置任何东西。我相信你想要做一些像loginActivity = mock(LoginActivity.class);这样的事情。

此外,您是在模仿而不是窥探类,因此它不会访问真正的方法来验证此方法的流。换句话说,你的测试实际上什么也没做。

最后,这个emailPattern从未在您的测试中使用过(可能是在您的代码中使用的),所以我相信您想要模拟它(我假设是这样)。我建议你这样做:

代码语言:javascript
复制
@RunWith(MockitoJUnitRunner.Silent.class)
public class LoginActivityTest {

    @Spy
    @InjectMocks
    private LoginActivity loginActivity;

    @Mock
    private OtherStuff otherStuff;

    @Test
    public void checkValidation(){
        UserVO userVO = new UserVO();
        userVO.setEmailID("invalid");
        userVO.setPassword("a");

        doReturn(Patterns.EMAIL_ADDRESS).when(otherStuff).doStuff();

        boolean result = loginActivity.validatesFields(userVO);

        assertFalse(result);
    }
}

我在这里做的只是一个单元测试的例子,它验证了validateFields()正在做什么。我猜想在这个方法里面有一些我命名为otherStuff的方法,它调用一个返回Patterns.EMAIL_ADDRESS的方法,这就是您想要模拟的。

如果您在这里插入更精确的LoginActivity代码会更好,但我希望我对您有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49756776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档