项目-Junit5单元测试

public class ResetPasswordPresenterTest extends BaseTest {

    @Mock
    private ResetPasswordView mResetPasswordView;
    private AccountLogic mAccountLogic;

    private ResetPasswordPresenter mResetPasswordPresenter;
    private String fakeoriginPassword = "";
    private String fakenewPassword = "";
    private String fakeconfirmPassword = "";

    @BeforeEach
    public void setUp() {
        super.setup();
        MockitoAnnotations.initMocks(this);
        mAccountLogic = Mockito.mock(AccountLogic.class);

        mResetPasswordPresenter = new ResetPasswordPresenter(mResetPasswordView);
        mResetPasswordPresenter.mAccountLogic = mAccountLogic;
    }

    @DisplayName("onOriginPasswordChangedIsEmpty")
    @Test
    public void onOriginPasswordChangedIsEmpty() {
        mResetPasswordPresenter.onOriginPasswordChanged(fakeoriginPassword);
        Mockito.verify(mResetPasswordView).disableConfirmButton();
    }

    @DisplayName("onOriginPasswordChanged")
    @Test
    public void onOriginPasswordChanged() {
        mResetPasswordPresenter.newPassword = "newPassword";
        mResetPasswordPresenter.confirmPassword = "newPassword";
        mResetPasswordPresenter.onOriginPasswordChanged("originPassword");
        Mockito.verify(mResetPasswordView).enableConfirmButton();
    }

    @DisplayName("onNewPasswordChangedIsEmpty")
    @Test
    public void onNewPasswordChangedIsEmpty() {
        mResetPasswordPresenter.onNewPasswordChanged(fakenewPassword);
        Mockito.verify(mResetPasswordView).disableConfirmButton();
    }

    @DisplayName("onNewPasswordChanged")
    @Test
    public void onNewPasswordChanged() {
        mResetPasswordPresenter.originPassword = "originPassword";
        mResetPasswordPresenter.confirmPassword = "newPassword";
        mResetPasswordPresenter.onNewPasswordChanged("newPassword");
        Mockito.verify(mResetPasswordView).enableConfirmButton();
    }

    @DisplayName("onConfirmPasswordChangedIsEmpty")
    @Test
    public void onConfirmPasswordChangedIsEmpty() {
        mResetPasswordPresenter.onConfirmPasswordChanged(fakeconfirmPassword);
        Mockito.verify(mResetPasswordView).disableConfirmButton();
    }

    @DisplayName("onConfirmPasswordChanged")
    @Test
    public void onConfirmPasswordChanged() {
        mResetPasswordPresenter.originPassword = "originPassword";
        mResetPasswordPresenter.newPassword = "newPassword";
        mResetPasswordPresenter.onConfirmPasswordChanged("newPassword");
        Mockito.verify(mResetPasswordView).enableConfirmButton();
    }

    @DisplayName("onClickConfirm_passwordLengthIsTooShort")
    @Test
    public void onClickConfirm_passwordLengthIsTooShort() {
        mResetPasswordPresenter.newPassword = "12345";
        mResetPasswordPresenter.confirmPassword = "12345";

        Mockito.when(mAccountLogic.resetPassword("originPassword", "newPassword"))
            .thenReturn(Observable.empty());

        mResetPasswordPresenter.onClickConfirm();

        Mockito.verify(mResetPasswordView).passwordLengthIsTooShort();
    }

    @DisplayName("onClickConfirm_incorrectConfirmPassword")
    @Test
    public void onClickConfirm_incorrectConfirmPassword() {
        mResetPasswordPresenter.newPassword = "newPassword";
        mResetPasswordPresenter.confirmPassword = "confirmPassword";

        Mockito.when(mAccountLogic.resetPassword("originPassword", "newPassword"))
            .thenReturn(Observable.empty());

        mResetPasswordPresenter.onClickConfirm();

        Mockito.verify(mResetPasswordView).incorrectConfirmPassword();
    }

    @DisplayName("onClickConfirmFailed")
    @Test
    public void onClickConfirmFailed() {
        mResetPasswordPresenter.originPassword = "originPassword";
        mResetPasswordPresenter.newPassword = "newPassword";
        mResetPasswordPresenter.confirmPassword = "newPassword";

        Mockito.when(mAccountLogic.resetPassword("originPassword", "newPassword"))
            .thenReturn(Observable.error(new HttpBadRequestException()));

        mResetPasswordPresenter.onClickConfirm();

        Mockito.verify(mResetPasswordView).originPasswordIsIncorrect();
    }

    @DisplayName("onClickConfirm")
    @Test
    public void onClickConfirm() {
        mResetPasswordPresenter.originPassword = "originPassword";
        mResetPasswordPresenter.newPassword = "newPassword";
        mResetPasswordPresenter.confirmPassword = "newPassword";

        Mockito.when(mAccountLogic.resetPassword("originPassword", "newPassword"))
            .thenReturn(Observable.empty());

        mResetPasswordPresenter.onClickConfirm();

        Mockito.verify(mResetPasswordView).resetPasswordSuccess();
    }
}

官方

JUnit 5 User Guide

中文

「译」JUnit 5 系列:环境搭建
「译」JUnit 5 系列:基础入门
「译」JUnit 5 系列:架构体系
「译」JUnit 5 系列:扩展模型(Extension Model)
「译」JUnit 5 系列:条件测试

Mockito 初探

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,554评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,259评论 19 139
  • “礼物?” 听到眼前万古塔的话,牧尘的眼中倒是涌起了强烈的兴趣。 苍老光影笑了笑,然后袖袍一挥,周遭的天地顿时出现...
    混沌天书阅读 1,688评论 0 0
  • 古方小巷酒飘香, 南溪市灯光闪亮, 旧祠堂古董珍藏, 青青翠竹漫山岗, 依依杨柳梳妆忙, 朱红长廊诉衷肠, 洞山塔...
    金赛月阅读 258评论 2 7
  • 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NUL...
    yangqi916阅读 642评论 0 0