2017-06-01 4 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"); 
    } 
} 

Ich habe ein Problem mit diesem Test.Android-Einheit Test mit Mockito

Es sollte sein "Passwort ist nicht gleich" auf dem 4. Test, aber es passiert immer noch, wenn ich den Test ausführen.

Ich weiß, es gibt ein Problem mit der Ansicht, denn wenn ich den vierten Test auf die erste verschieben Es wird die Fehlermeldung zeigt mir die richtige ist "das Passwort ist nicht gleich" nicht "Fehler".

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

zeigen den Code für validPAssword2(); –

+0

OK, ich füge es auf –

+0

Ist das alles ein Test? Versuchen Sie, sie in vier Einzeltests zu teilen –

Antwort

0

Zwischen den Verifikationsaufrufen (Mock) liegen einige Störungen vor.

Tests sollten nur aus einem Grund fehlschlagen und aus diesem Grund sollten Sie Ihre Tests in Einzeltests aufteilen.

so etwas wie

@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

vielen Dank !! Ich werde sie aufteilen –