我正在完成以下教程:
http://docs.spring.io/docs/Spring-MVC-step-by-step/part4.html
我正在尝试在下面的类中测试validate方法:
public class PriceIncreaseValidator implements Validator {
public void validate(Object obj, Errors errors) {
PriceIncrease pi = (PriceIncrease) obj;
if (pi == null) {
errors.rejectValue("percentage", "error.not-specified", null, "Value required.");
}
........
}
以下是我的JUnit测试用例:
private PriceIncreaseValidator priceIncreaseValidator;
private PriceIncrease priceIncrease;
private Errors errors;
public void testEmptyPriceIncrease() {
priceIncreaseValidator.validate(priceIncrease, errors); // This is where I get NPE
assertTrue(errors.hasErrors());
}
因此,在我的JUnit测试用例中调用validate方法时,我得到了NPE。 测试和课程都编译得很好。
我已尝试将priceIncrease转换为如下所示的对象,但仍然没有运气:
Object obj = priceIncrease;
//validate
priceIncreaseValidator.validate(obj, errors);
有什么想法吗?
如你所见,我试图测试一下,如果没有设定价格上涨,那就是 调用validate时会返回错误。
答案 0 :(得分:1)
没有任何字段PriceIncreaseValidator,PriceIncrease,Errors
被实例化。
创建这些字段的实例或使用Spring自动装配它们。
要创建Errors
对象,请使用:
Errors errors = new BeanPropertyBindingResult(priceIncrease, "priceIncrease");
完整示例
public void testEmptyPriceIncrease() {
PriceIncreaseValidator priceIncreaseValidator = new PriceIncreaseValidator();
PriceIncrease priceIncrease = new PriceIncrease();
Errors errors = new BeanPropertyBindingResult(priceIncrease, "priceIncrease");
priceIncreaseValidator.validate(priceIncrease, errors); // This is where I get NPE
assertTrue(errors.hasErrors());
}