2014-04-07 64 views
0

我有一个简单的验证来验证客户端不存在具有相同的属性,只有验证有2个选项: 1.如果满足某些条件抛出验证异常。 2.否则返回void。Junit无效验证方法

像这样:

public class ClientValidator { 
    private ClientFinder clientFinder; 
    protected void validate(final Client client) throws ValidationException 
    { 
     final Client existingClient = clientFinder.getClientByAttributes(client.getAttr1(), 
     client.getAttr2()); 
     if (existingClient != null && ! existingClient.getId().equals(client.getId())) 
     { 
      throw new ValidationException("Client Exists with the same attributes")); 
     } 
    } 
    //getters and setters 

}  
} 

了JUnit:

@UnitTest 
@RunWith(MockitoJUnitRunner.class) 
public class ValidatorTest 
{ 
    private ClientValidator validator; 

    @Mock 
    private ClientFinder clientFinder; 
    private Client existingClient; 
    private Client newClient; 
    private static final String ATTR1 = "ATTR1"; 
    private static final String ATTR2 = "ATTR2"; 

    @Before 
    public void setup() 
    { 
     existingClient = new Client("ID1", ATTR1, ATTR2); 
     newClient = new Client("ID2", ATTR1, ATTR2); 


     validator = new ClientValidator(); 
     validator.setClientFinder(clientFinder); 
    } 

    @Test(expected = ValidatorException.class) 
    public void testCreatingNewClient() throws ValidationException 
    { 
     //the service will find other Client than the one being created 
     Mockito.when(clientFinder.getClientByAttributes(ATTR1, ATTR2)).thenReturn(existingClient); 
     validator.onValidate(newClient); 
    } 



    @Test() 
    public void testModifyExistingClient() throws ValidationException 
    { 
     //the service will find the same Client being modified 
     Mockito.when(clientFinder.getClientByAttributes(ATTR1, ATTR2)).thenReturn(newClient); 
     validator.onValidate(newClient); //No exception should be thrown 
    } 


} 

第二确认是可能发生的情况之一,是第二个验证不必要的由于没有断言? 有没有办法验证这个第二个条件?

回答

1

你写的测试很好。不需要“断言”。执行达到测试底部的事实足以使其“绿色”。你已经在你的测试中得到了这个效果的评论,并且通过一切手段将其留下,只是为了清楚说明发生了什么。但请不要在测试中添加无意义的“断言”。