什么在这里做你想做的测试呢?如果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