2017-06-01 20 views
0
@RunWith(MockitoJUnitRunner.class) 

public class RegisterMemberPresenterTest { 
    @Mock 
    private RegisterModel mRegisterModel; 
    @Mock 
    private VerifyModel mVerifyModel; 
    @Mock 
    private RegisterMemberContract.View mView; 
    @Mock 
    private RegisterMemberPresenter mRegisterMemberPresenter; 
    @Before 
    public void setUp() throws Exception { 
     MockitoAnnotations.initMocks(this); 
    } 
    @Test 
    public void check_validPassword(){ 
     mRegisterMemberPresenter = new RegisterMemberPresenter(mRegisterModel,mVerifyModel,mView); 
     mMemberPresenter.validPassword2("","123"); 
     verify(mView).setPasswordValidation(false, "error"); 

     mMemberPresenter.validPassword2("123",""); 
     verify(mView).setPassword2Validation(false, "error"); 

     mMemberPresenter.validPassword2("123","123"); 
     verify(mView).setPassword2Validation(true, null); 

     mMemberPresenter.validPassword2("123","456"); 
     verify(mView).setPassword2Validation(false, "error"); 
    } 
} 

このテストで問題があります。MockitoでのAndroidユニットテスト

4回目のテストでは「パスワードは同じではありません」が、テストを実行するとまだパススルーされます。

私は4番目のテストを最初に移動すると、ビューに問題があることを知っています 「エラーはありません」というエラーメッセージが表示されます。

public void validPassword2(String pwd, String pwd2) { 
    if (pwd.isEmpty()) { 
     mView.setPasswordValidation(false, "error"); 
     return; 
    } 
    if (pwd2.isEmpty()) { 
     mView.setPassword2Validation(false, "error"); 
     return; 
    } 
    if (pwd.equals(pwd2)) { 
     mView.setPassword2Validation(true, null); 
    } else { 
     mView.setPassword2Validation(false, "password is not same"); 
    } 
} 
+0

よう

何か)(validPAssword2ためのコードを示し; –

+0

OK、それを追加します –

+0

これはすべて1回のテストですか?それらを4つの個別のテストに分割してみてください –

答えて

0

ベリファイ(モック)コールの間に何らかの干渉が発生します。

テストは1つの理由だけで失敗するはずです。そのため、テストを個別のテストに分割する必要があります。

@RunWith(MockitoJUnitRunner.class) 

public class RegisterMemberPresenterTest { 
    @Mock 
    private RegisterModel mRegisterModel; 
    @Mock 
    private VerifyModel mVerifyModel; 
    @Mock 
    private RegisterMemberContract.View mView; 
    @Mock 
    private RegisterMemberPresenter mRegisterMemberPresenter; 
    @Before 
    public void setUp() throws Exception { 
     MockitoAnnotations.initMocks(this); 
     mRegisterMemberPresenter = new RegisterMemberPresenter(mRegisterModel,mVerifyModel,mView); 
    } 

    @Test 
    public void check_validPassword_blankFirstPassword(){ 
     mMemberPresenter.validPassword2("","123"); 
     verify(mView).setPasswordValidation(false, "error"); 
    } 

    @Test 
    public void check_validPassword_blankSecondPassword(){ 
     mMemberPresenter.validPassword2("123",""); 
     verify(mView).setPassword2Validation(false, "error"); 
    } 

    @Test 
    public void check_validPassword_validMatchingPasswords(){ 
     mMemberPresenter.validPassword2("123","123"); 
     verify(mView).setPassword2Validation(true, null); 
    } 

    @Test 
    public void check_validPassword_nonMatchingPasswords(){ 
     mMemberPresenter.validPassword2("123","456"); 
     verify(mView).setPassword2Validation(false, "error"); 
    } 
} 
+0

ありがとうございました! 私はそれらを分割します –

関連する問題