segunda-feira, 30 de junho de 2008

Inicialização do contexto Spring em testes unitários

Durante o desenvolvimento de uma classe de testes na semana passada, decidi que ela devia acessar o banco da forma mais realista possível. Como a aplicação usa Spring/Hibernate e jndi, procurei solução para a questão da inicialização do ambiente. Optei por criar uma classe "helper" para garantir a inicialização e as classes de teste executam um método de inicialização dessa classe:


/**
 * 
 */
package com.arcadian.logOne.interfacedte;

import javax.naming.NamingException;

import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mock.jndi.SimpleNamingContextBuilder;

/**
 * @author walter
 *
 */
public class TestHelper {

    private static String[] springFiles = { "beanRefFactory.xml" };
    private static ClassPathXmlApplicationContext context=null;

    public static void startSpringContext() throws NamingException{
        
        if(context == null){//was not started
            BasicDataSource ds = new BasicDataSource();
            ds.setDriverClassName("org.postgresql.Driver");
            ds.setUsername("morganalborg");
            ds.setPassword("jpfr33");
            ds.setUrl("jdbc:postgresql://localhost/interfacedte_teste");

            SimpleNamingContextBuilder builder =
                    SimpleNamingContextBuilder.emptyActivatedContextBuilder();
            
            builder.bind("java:comp/env/jdbc/interfacedte", ds);
            
            context = new ClassPathXmlApplicationContext(springFiles);
        }
    }
}

Nenhum comentário: