JUnit runner personalizado com o contexto do aplicativo Spring

Sou bastante novo no Spring e estou trabalhando com um conjunto de testes de integração do JUnit 4.7 para um aplicativo da web. Eu tenho vários casos de teste de trabalho do formulário:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/META-INF/spring/testContext.xml" })

public class myTest {
    @Test
    public void testCreate() {
            //execute tests
            ....
    }
}

Meu aplicativo possui várias dependências externas que estou testando, todas com beans inicializados através do carregamento de testContext.xml. Algumas dessas dependências externas exigem código personalizado para inicializar e desmontar os recursos necessário

Em vez de duplicar este código em todas as classes de teste que o exigem, gostaria de encapsulá-lo em um local comum. Meu pensamento era criar uma definição de contexto separada, bem como um corredor personalizado que estende SpringJUnit4ClassRunner e contém a anotação @ContextConfiguration e o código personalizado relacionado, da seguinte forma:

import org.junit.runners.model.InitializationError;
import org.junit.runners.model.Statement;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

//load the context applicable to this runner
@ContextConfiguration(locations = { "/META-INF/spring/testContext.xml" })

public class MyCustomRunner extends SpringJUnit4ClassRunner {

    public MyCustomRunner(Class<?> clazz) throws InitializationError {
        super(clazz);           
    }

    @Override
    protected Statement withBeforeClasses(Statement statement) {
        // custom initialization code for resources loaded by testContext.xml
                ...

        return super.withBeforeClasses(statement);
    }

    @Override
    protected Statement withAfterClasses(Statement statement) {
        // custom cleanup code for resources loaded by testContext.xml
                ....

        return super.withAfterClasses(statement);
    }

}

Posso cada classe de teste especificar seu corredor aplicável com:

@RunWith(MyCustomRunner)

Quando faço isso, meus testes são executados e o withBeforeClasses e withAfterClasses métodos são executados. No entanto, nenhum applicationContext é fornecido de volta à classe de teste e todos os meus testes falham com:

java.lang.IllegalArgumentException: Não é possível carregar um ApplicationContext com um 'contextLoader' NULL. Considere anotar sua classe de teste com @ ContextConfiguration.

O contexto só carrega corretamente se eu especificar a anotação @ContextConfiguration em cada classe de teste - idealmente, eu gostaria que essa anotação vivesse com o código do manipulador dos recursos que ele é responsável pelo carregamento. O que me leva à minha pergunta - é possível carregar informações de contexto do Spring de uma classe de corredor personalizada?

questionAnswers(1)

yourAnswerToTheQuestion