使用注释进行JUnit测试

时间:2014-03-04 15:34:46

标签: java junit

嘿所有我试图让这些单元测试失败但不能使用注释,这对我来说是新的。任何想法都会很棒!

我一直在尝试各种方法来通过将测试类变量设置为null或尝试在最小测试中使用if / else语句来使它们失败,但它们总是通过传递。这是对的吗?

public class ValidationServiceTest extends BaseServiceTest {
    ValidationService validationService;
    ValidationException ve;
    TestDto test;
    Field f;

    @Before
    public void setup() {
        validationService = new ValidationService();
        ve = null;
    }

    @Test
    public void validateNotNull(){
        try {
            validationService.validate(ve, test.xx);
            assertNotNull("testing notNull()", ve);
        } catch (Exception e) {
        }
    }

    @Test
    public void validateMin(){
        try {
            validationService.validate(ve, test.xy);
            if(test.xy > f.min()){
                assertTrue("testing min()" , test.xy > -1);
            }
        } catch (Exception e) {
        }
    }

    public class TestDto{
        @Field(notNull=true)
        public Integer xx = null;
        @Field(min=2)
        public Integer xy = -5;
    }
}

1 个答案:

答案 0 :(得分:0)

不要捕获异常,而是使用throws Exception标记测试方法。

test字段永远不会在您的测试中初始化,这意味着它是 null 。每当您尝试访问test的字段时,这会导致NullPointerException。跳过断言行,并在catch子句中抑制异常。删除try / catch块并使用throws Exception标记测试方法将导致测试报告错误,您将立即看到错误。