Integrar JUnit con Spring

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>
Hi! If you find my posts helpful, please support me by inviting me for a coffee :)

Ver también