2010-12-10 2 views
0


Я столкнулся с небольшой проблемой в отношении аннотации @ContextConfiguration с помощью Spring 3.0.4. Я хотел бы получить их во время выполнения через applicationContext (если возможно).Получение конфигурации контекста во время выполнения

Скажем, у меня есть этот класс:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"foo.xml", "bar.xml"}) 
public class Foo() extends AbstractTransactionalJUnit4SpringContextTests { 
    @Before 
    public void before() { 
     //retrieve foo.xml and bar.xml here 
    } 
} 

Было бы полезно в моей ситуации, я смотрел на веб немного и не нашли много идей о том, как достичь этого, возможно, эксперты SO могут помочь мне в этом.

Благодаря

+0

Обратите внимание, что ваш класс нельзя назвать `foo()`. Его следует называть `Foo` – Bozho 2010-12-10 13:16:54

+0

Там вы идете;) – ALOToverflow 2010-12-10 13:26:29

ответ

3

Я не в курсе того, общественную полезность для этого, но самый простой способ будет вручную разобрать аннотацию:

String[] locations = 
    Foo.class.getAnnotation(ContextConfiguration.class).locations(); 
0

Проверьте, реализации ApplicationContextAware интерфейс поможет , Это должно предоставить вам доступ к контексту приложения.

0

Вы не можете динамически указывать местоположения в аннотации @ContextConfig. Но вместо этого вы можете использовать TestExecutionListener, а также соответствующую аннотацию. В beforeTestMethod() слушатель может получить ApplicationContext из TestContext и загрузить необходимые XML-файлы вручную.

Если вы хотите разные XML-файлы для каждого теста, вы также должны вызвать TestContext.markApplicationContextDirty() в методе @After.

Смежные вопросы