Como principiante en el desarrollo de Test Driven acabo de encontrar un problema. Mi clase de prueba comienza de la siguiente manera:Pruebas de JUnit independientes con Springs @Autowired
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@DirtiesContext
@ContextConfiguration(locations = {"/web-test.xml"})
public class XXTest {
@Autowired
XX xx;
@Autowired
HibernateTemplate template;
@Test
public void testSetGetXXValue() throws Exception {
final Map<String, YY> profilMap = new HashMap<String, YY>(2);
profilMap.put("1", new YY());
profilMap.put("2", new YY());
simpleCockpit.setValues(profilMap);
assertEquals(profilMap, simpleCockpit.getValues());
}
Como se puede ver, el primer método de prueba altera la clase XX autowired. Eso afecta a todos los siguientes métodos de prueba, que se basa en que XX tiene los valores de autoconexión.
¿Cómo puedo probar getter y setter desde XX Y asegúrese de que XX tenga los valores de autowired para el resto de los métodos de prueba?
Pensamientos:
- Pon los valores de la derecha al final del método de ensayo. Malo porque si el getter/setter no funciona, tampoco funcionará.
- Coloque el primer método de prueba al final de la clase de prueba. Malo porque eso hace que las pruebas dependan de su orden de ejecución.
- No pruebe el captador/instalador de XX. Malo porque getter/setter tiene que ser probado como todos los métodos.
Gracias por sus respuestas! Yo estoy bastante seguro de que esto tiene una solución fácil ... :)
EDITAR: En cuanto a las cuestiones de si getters/setters o no de pruebas unitarias, me decidieron a hacerlo, principalmente debido a las razones Statet en http://www.sundog.net/sunblog/posts/should-we-test-getters-and-setters/.
@DirtiesContext era exactamente lo que estaba buscando. Gracias. Quiero conectar automáticamente este bean porque es un DAO que entrega datos de prueba de una base de datos. – Steven