Olá,
Criei minha camada de persistência com Hibernate + Spring (não usei templates), com os DAOs, os services com transactions e os beans todos anotados devidamente. Meu problema está em como testar essa camada. Já procurei muito e sempre encontro tópicos que falam de JUnit e DBUnit, porém ou eram de pessoas com as classes já feitas e tendo problemas ou com integração com o Mavin, que eu não estou usando.
Gostaria que alguém me mostrasse como eu posso fazer isso. Aqui vão algumas classes minhas e a classe que construí, meio que às cegas, para tentar o teste:
classe Usuario
@Entity
@Table(name="usuario")
public class Usuario implements Serializable{
private long id;
private String nome;
private String email;
private String senha;
private String login;
private String tipo;
private Date dataCadastro;
private int pontos;
private String foto;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(name="user_nome")
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Column(name="user_email")
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
...
...
}
Usuario DAO
@Repository
public class HibernateUsuarioDAO {
private SessionFactory sessionFactory;
@Autowired
public HibernateUsuarioDAO(SessionFactory sessionFactory){
this.sessionFactory = sessionFactory;
}
private Session currentSession(){
return sessionFactory.getCurrentSession();
}
public void addUsuario(Usuario usuario){
currentSession().save(usuario);
}
public void atualizaUsuario(Usuario usuario){
currentSession().update(usuario);
}
public void excluirUsuario(Usuario usuario){
currentSession().delete(usuario);
}
}
classe UsuarioService
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class UsuarioService {
private HibernateUsuarioDAO usuarioDao;
@Autowired
public UsuarioService(HibernateUsuarioDAO usuarioDao){
this.usuarioDao = usuarioDao;
}
public void addUsuario(Usuario usuario){
usuarioDao.addUsuario(usuario);
}
}
Tentativa de teste…
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"spring.xml"})
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)
@Transactional
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class})
public class HibernateFuncionalTestBase {
@Autowired
protected UsuarioService usuarioService;
@Autowired
protected VerbeteService verbeteService;
@Test
protected void addUsuario(){
Usuario usuario = new Usuario();
usuario.setNome("nome");
usuario.setDataCadastro(new Date());
usuario.setEmail("email");
usuario.setFoto("foto");
usuario.setLogin("login");
usuario.setPontos(5);
usuario.setSenha("senha");
usuario.setTipo("ADMIN");
usuarioService.addUsuario(usuario);
}
}
Como disse, fiz essa classe de testes sem entender bem…
Meus beans estão em WEB-INF/spring.xml
Qualquer link ou informação sobre o assunto será apreciada 
Obrigado.