Cuando probéis de hacer tests con Spring, si queréis inyectar dependencias en ellos (probablemente lo más normal ya que estáis con Spring) tengáis problemas al ejecutarlos, vaya, que no funcione. El problema, muy bien explicado, lo encontráis en el blog de jmonne. El caso es que las clases que extiendes para hacer los tests tienen activado el autowiring, no como las demás clases de Spring, y por defecto lo hace por tipo. Con lo cual si usas clases genéricas vas a tener problemas al no poderse resolver la dependencia debido a que encontrará ambigüedades.
La solución que a mi me ha parecido más clara para estos casos es cambiar el autowire y hacerlo por nombre. De esta manera eliminaremos la ambigüedad.
Para conseguirlo la propiedad en la clase del test se llamará igual que la definición de la clase que quieras instanciar, además añadiremos al constructor de la clase de nuestro test que el modo de autowire sea por nombre.
Mucho mejor lo veréis en un ejemplo:
- applicationContext.xml
- Definición de la clase sobre la que queremos hacer el test.
- TestTable.java
- Clase que ejecuta el test, basada en junit.
<bean id="tableManager" class="com.pedromarce.GenericManagerImpl">
<property name="genericDao" ref="tableDao"/>
</bean>
public class TestTipusAvantatge extends AbstractTransactionalDataSourceSpringContextTests {
protected GenericManager tableManager;
public testTable() {
setAutowireMode(AUTOWIRE_BY_NAME);
}
public void setTable(GenericManager service) {
this.tableManager = service;
}
protected String[] getConfigLocations() {
return new String[] { "applicationContext.xml"};
}
public myTest() throws Exception {
.......
}
}
Y eso es todo, así ya podréis pasar tests unitarios a clases genéricas que inyectan las clases finales en tiempo de ejecución.
Como dijo Trillo, manda huevos…
5 últimas entradas en java
- Andar hacia atrás no puede ser bueno... - May 27th, 2008
- Un ejemplo de Tiles 2 con componentes anidados y ViewPreparer - April 23rd, 2008
- Por que Java tiene que ser tan complicado? - March 18th, 2008
5 últimas entradas en tutorial
- [Consejos Terminal] Utiliza las expresiones regulares, son tus amigas - June 9th, 2008
- [Consejos Terminal] Aprende a utilizar curl para Internet - June 6th, 2008
- [Consejos Terminal] Encuentra ficheros grandes y otras funciones - June 4th, 2008
- Arranca tomcat permitiendo debug en eclipse - June 3rd, 2008
- [Consejos Terminal] Aprovecha pushd y popd para navegar por los directorios. - June 3rd, 2008

0 Comments
There are no comments yet, be the first by filling in the form below.
Leave a Comment