User Tools

Site Tools


java:junit4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
java:junit4 [2010/07/31 00:22] – creado rlunarojava:junit4 [2022/12/02 22:02] (current) – external edit 127.0.0.1
Line 52: Line 52:
 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
  
 +import static org.junit.Assert.*;
  
  
Line 83: Line 84:
  System.out.println("hello spring");  System.out.println("hello spring");
  element.setIdAndContent( -1, new StringBuilder("hola") );  element.setIdAndContent( -1, new StringBuilder("hola") );
 + assertTrue( true ); 
  }  }
   
Line 88: Line 90:
  
 </code> </code>
 +
 +Por cierto, agradeceré enormemente que alguien me explique porqué los ejemplos los pone la gente sin los "import". Hala, ahí te las compongas para buscar de dónde han salido las clases!!!
 +
 +
 +==== Explicando un poco el asunto ====
 +
 +<code java>
 +
 +@ContextConfiguration(locations={"applicationContext.xml"})
 +
 +</code>
 +
 +El meollo del maridaje JUnit - Spring. ContextConfiguration consigue proveer un contexto de aplicación para el test. Además de que nos va a hacer el Autowiring --o sea, crear automáticamente los //beans// que necesitemos--, es así de majo que nos deja disponible en la propiedad ''applicationContext'' linea directa con el contexto de aplicación, por si nos apetece crear un bean que nos haga falta. 
 +
 +==== Enchufando cosas ====
 +
 +<code java>
 + // this instance will be dependency injected by type
 + @Autowired
 + private htmlElement element; 
 +
 +</code>
 +
 +La anotacion ''@Autowired'' permite que una propiedad sea auto-conectada en el momento de la creación del test. Va a identificarla por tipo. En otras palabras, buscará un bean que sea del mismo tipo htmlElement que hemos definido, y va y se lo casca. 
 +
 +**¿Qué pasa si hay dos bean del mismo tipo???** pues que entonces se hace un lío. En ese caso ''[[http://static.springsource.org/spring/docs/3.0.2.RELEASE/spring-framework-reference/html/beans.html#beans-autowired-annotation-qualifiers|@Qualifier]]'' viene al rescate, permitiendonos identificar el bean concreto.
 +
 +Las anotaciones ''@Before'', ''@After'', ''@Test'' creo que os podeis imaginar lo que hacen. 
 +
 +===== Ejecutando el test =====
 +
 +Sobre la clase, boton derecho, Run As -> Junit Test y se lanzará el test, mostrando algo así: 
 +
 +<code>
 +31-jul-2010 0:54:00 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
 +INFO: Loading XML bean definitions from class path resource [test/applicationContext.xml]
 +31-jul-2010 0:54:00 org.springframework.context.support.AbstractApplicationContext prepareRefresh
 +INFO: Refreshing org.springframework.context.support.GenericApplicationContext@351e1e67: startup date [Sat Jul 31 00:54:00 CEST 2010]; root of context hierarchy
 +31-jul-2010 0:54:00 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
 +INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4ce66f56: defining beans [htmlCleaner,htmlTokenizer,htmlElement,tagTokenizer,tagParser,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy
 +hello setup method
 +hello spring
 +goodbye setup
 +
 +</code>
 +
 +Si os sale una ventana de configuración de ejecución teneis que seleccionar que eclipse ejecute el test como un test de JUnit4. Dato importante. 
 +
 +Otro problema bastante común es que se produce un error "File not found exception": a mí me ocurrió porque no tenía el fichero applicationContext.xml en la misma carpeta que la clase. 
 +
 +===== Segundo error: Creando una Suite que agrupe a todos los test =====
 +
 +Tampoco se os ocurra crear la suite de tests usando el asistente de eclipse. Aquí hay que picarlo todo a mano. Os paso un ejemplo de los muchos que hay por internet: 
 +
 +<code java>
 +package test;
 +
 +import org.junit.runner.RunWith;
 +import org.junit.runners.Suite;
 +
 +@RunWith(Suite.class)
 +@Suite.SuiteClasses({HTMLTokenizerTest.class,
 + HTMLCleanerTest.class,
 + HTMLElementTest.class})
 +public class AllTests
 +{
 +
 +}
 +
 +</code>
 +
 +
 +''HTMLTokenizerTest.class'', ''HTMLCleanerTest.class'' y ''HTMLElementTest.class'' son las clases de test que he creado para este ejemplo. 
 +
 +
 +===== Documentasao =====
 +
 +
 +  * [[http://static.springsource.org/spring/docs/2.5.x/reference/testing.html]]
 +  * [[http://aows.wordpress.com/2009/11/03/inyeccion-dependecias-spring-autowired-qualifier-resource/|Sobre Qualifier]]
 +  * [[http://stackoverflow.com/questions/457276/junit4-test-suites]]
 +  * [[http://kentbeck.github.com/junit/javadoc/latest/]]
 +  * JUnit4, gracias por nada!!!
 +  * 
  
  
java/junit4.1280528579.txt.gz · Last modified: 2022/12/02 22:02 (external edit)