Java验证作为参数传递的枚举值

时间:2016-01-24 00:16:20

标签: java junit enums

我有以下枚举

public enum State {
    UNCHECKED, SUBMITTED, VALIDATED, REJECTED, ENTITLED;
}

在另一个类中我有一个接收State作为参数的方法,比如

public void validate (State state) throws InvalidStateException {
    if (state != State.VALIDATED || state != State.REJECTED) 
        throw new InvalidStateException(); 
}

只有当参数State不是State.VALIDATED或State.REJECTED但实际上总是抛出它时,此方法才应抛出异常InvalidStateException。 我只是看不出错误在哪里,或者我怎么能以另一种方式编写代码。

我知道这不起作用,因为下面的JUnit测试表明引发了异常并且它不应该出现:

@Test
public void testValidate () throws InvalidStateException {
    object.validate(State.VALIDATED);
}

1 个答案:

答案 0 :(得分:2)

条件state != State.VALIDATED || state != State.REJECTED始终为真。唯一可能是错误的方法是让状态同时被确认和拒绝。

您需要&&,而不是||