什麼在這裏做你想做的測試呢?如果if (!email.contains("@"))
正在工作?如果您想從用戶的角度對此進行測試,那麼您想要進行集成或GUI測試,例如Selenium。
如果你想爲你的電子郵件驗證一個單元測試,我會在課堂上做到這一點:
public class EmailValidator implements Validator {
public void validate(FacesContext context, UIComponent arg1, Object value)
throws ValidatorException {
String email = (String) value;
if (!isValidEmail(email)) {
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary(" Email is not valid.");
message.setDetail(" Email is not valid.");
context.addMessage("userForm:Email", message);
throw new ValidatorException(message);
}
}
boolean isValidEmail(String emailAddress){
// do your tests here...
}
}
然後寫一個測試類是這樣的:
public class EmailValidatorTest {
@Test
public testIsValidEmail(){
EmailValidator validator = new EmailValidator();
Assert.assertTrue(validator.isValidEmail("[email protected]");
Assert.assertFalse(validator.isValidEmail("aaa");
// more assertions here...
}
}
編輯
好了,你可以通過提供所謂的Mock objects編寫該方法的測試。然後你只指望一個異常發生時所提供的電子郵件地址無效:
public class EmailValidatorTest{
@Test
public void testValidateWithValidAddresses(){
FacesContextMock facesContextMock = new FacesContextMock();
EmailValidator validator = new EmailValidator();
validator.validate(facesContextMock, null, "[email protected]");
}
@Test(expected=ValidatorException.class)
public void testValidateWithInvalidAddresses(){
FacesContextMock facesContextMock = new FacesContextMock();
EmailValidator validator = new EmailValidator();
validator.validate(facesContextMock, null, "foo");
}
}
的FacesContextMock僅僅是實現了FacesContext的方法,而沒有進行任何操作,樣機:
public class FacesContextMock extends FacesContext{
@Override
public Application getApplication(){
return null;
}
// all the abstract methods implemented here, just doing nothing
}
這麼說,我不要認爲你必須編寫測試用例才能獲得接近100%的代碼覆蓋率。我認爲應該進行測試,有多少代碼覆蓋率人需要的是非常詳細了,在https://sqa.stackexchange.com/
其實我寫的一樣,但我的代碼覆蓋報告顯示,這種方法還需要進行測試的討論。我正在做JUNIT測試第一次,讓我卡在這裏? 感謝您的答覆。 – Kshitij 2012-07-23 11:02:26
@ user1539930我更新我的回答和表現方式如何測試validate方法。 – 2012-07-23 11:54:12
嘿感謝蒂姆:) :) – Kshitij 2012-07-23 13:16:32