Integrar JUnit con Spring

By | 11/09/2009

Integrar JUnit con Spring es bastante simple. Solo debes crear tu test y anotarlo con @RunWith(SpringJUnit4ClassRunner.class).

JUnit invocará la clase de referencia, en este caso ‘SpringJUnit4ClassRunner’.
SpringJUnit4ClassRunner se encargará de levantar el contexto de Spring, en este ejemplo tengo dos contextos, donde el segundo ‘sobreescribe’ al primero.

La configuración del contexto puedes pasarla con otra anotación de Spring @ContextConfiguration

Para inyectar un bean de Spring en el test deben marcarlo con @Autowired.

Spring buscará un bean definido con el mismo nombre del atributo y lo inyectará en tu test. Si queres forzar a Spring para que utilice un bean puedes utilizar @Qualifier

import java.util.ArrayList;
 
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
/**
 * @author gustavo
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/gp/applicationContext.xml", "/gp/applicationContextTesting.xml" })
public class TestWithSpring {
 
    @BeforeClass
    public static void setup() {
        BasicConfigurator.configure();
        Logger.getRootLogger().setLevel(Level.INFO);
        //... configuracion de inicio
    }
 
    @Autowired
    @Qualifier("_testSpringList")
    private ArrayList _testSpringList; // spring inyectara este atributo
 
    @Test
    public void simpleTest() {
        Assert.assertFalse(this._testSpringList.isEmpty());
        for (Object s : this._testSpringList) {
            System.out.println(s.toString());
        }
    }    
 
    @AfterClass
    public static void endClazz() {
        //... 
    }
 
}

En Spring tengo definido _testSpringList de esta manera:

 
<bean id="_testSpringList" class="java.util.ArrayList">
    <constructor-arg>
        <list>
           <value>hi!</value>
           <value>bye!</value>
        </list>
    </constructor-arg>
</bean>
Compartir esto:

One thought on “Integrar JUnit con Spring

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *