Criei alguns testes ontens para uma lógica que estou fazendo, e percebi que o validator.validade(…) não está validando os campos da entidade que estão com as annotations do Hibernate Validator.
Não sei se é alguma configuração errada.
Criei um projeto de teste só com Controller, Model e DAO mas sem o banco de dados ainda.
Seguem os códigos:
[code]@Entity
public class Teste {
@Column
@Length(min=3)
private String campo1;
@Column
@org.hibernate.validator.NotEmpty
private String campo2;
@Column
@NotNull
private String campo3;
public Teste(){}
public Teste(String campo1, String campo2, String campo3) {
this.campo1 = campo1;
this.campo2 = campo2;
this.campo3 = campo3;
}
public String getCampo1() {
return campo1;
}
public void setCampo1(String campo1) {
this.campo1 = campo1;
}
public String getCampo2() {
return campo2;
}
public void setCampo2(String campo2) {
this.campo2 = campo2;
}
public String getCampo3() {
return campo3;
}
public void setCampo3(String campo3) {
this.campo3 = campo3;
}
}
[/code]
[code]@Component
public class TesteDAO implements ITesteDAO{
private Session session;
public TesteDAO(Session session) {
this.session = session;
}
public void save(Teste teste) {
System.out.println(teste.toString());
}
public Session getSession() {
return session;
}
}[/code]
public interface ITesteDAO {
public void save(Teste teste);
}[/code]
[code]@Resource
public class TesteController {
private final ITesteDAO testeDAO;
private final Validator validator;
private final Result result;
public TesteController(Result result, Validator validator, ITesteDAO testeDAO) {
this.result = result;
this.validator = validator;
this.testeDAO = testeDAO;
}
public void add(Teste teste) {
validator.validate(teste);
validator.onErrorUse(Results.logic()).forwardTo(TesteController.class).erro();
testeDAO.save(teste);
result.forwardTo(TesteController.class).sucesso();
}
public void erro() {
System.out.println("erro");
}
public void sucesso(){
System.out.println("sucesso");
}
}
[code]public class TesteControllerTest {
private Mockery mockery;
private TesteController testeController;
private ITesteDAO testeDAO;
@Before
public void setUp() {
mockery = new Mockery();
testeDAO = mockery.mock(ITesteDAO.class);
Validator validator = new MockValidator();
Result result = new MockResult();
testeController = new TesteController(result, validator, testeDAO);
}
@Test(expected=ValidationException.class)
public void errorTest() {
Teste teste = new Teste();
errorTestExpectation(teste);
testeController.add(teste);
}
public void errorTestExpectation(final Teste teste) {
mockery.checking(new Expectations() {
{
never(testeDAO).save(teste);
}
});
}
}[/code]
Só criei este projeto pra realmente saber se estava funcionando ou se era erro de configuração nos outros projetos.
Também não funcionou :\