En esta ocasión la clase de Spring de la que va a extender nuestro test es AbstractTransactionalTestNGSpringContextTests.
Para incorporar esta clase a nuestro classpath podemos hacerlo fácilmente añadiendo la dependencia maven del proyecto spring-test:
org.springframework spring-test 2.5.6 test
Tenemos que utilizar una anotación @ContextConfiguration para indicarle donde se encuentra el fichero xml con la configuración de spring para cargar la configuración de conexión a la base de datos de testing.
Si queremos que las tablas de nuestra base de datos se encuentren en un estado determinado, podemos realizar las inserts que consideremos oportunas en el método que tenga la anotación @BeforeMethod
A continuación pongo el ejemplo:
@ContextConfiguration(locations={"classpath:/testng-spring-core-services-config.xml"})
public class RoleDaoTest extends AbstractTransactionalTestNGSpringContextTests {
@Autowired
private IRoleDao roleDao;
@Test
public void testFindByRoleNameExists (){
Role role = roleDao.findByRoleName(RoleName.Admin);
assertNotNull (role);
}
@Test
public void testFindByRoleNameNotExists (){
Role role = roleDao.findByRoleName(RoleName.AdvancedCrmUser);
assertNull (role);
}
@BeforeMethod
protected void onSetUpInTransaction() throws Exception {
Role roleAdmin = new Role();
roleAdmin.setName(RoleName.Admin);
roleDao.create(roleAdmin);
}
}
Como se ha comentado antes, el fichero testng-spring-core-services-config.xml es el que tiene la configuración de spring necesaria para que funcione el test. En mi caso tiene la siguiente pinta:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
No hay comentarios:
Publicar un comentario