2014-03-17 3 views
0

Начиная с весны 3.2, вы можете иметь в своих тестах компоненты с запросом и сессией, которые могут быть прочитаны in the Spring reference manual, section 11.3.5.Весенний сеанс бобов в тесте TestNG?

Например:

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration({"classpath:applicationContext.xml"}) 
public class Test1 
{ 
    @Autowired 
    private MySessionBean state; 

    @Test 
    public void test() { 
     System.out.println(state.toString()); 
    } 
} 

Вышеуказанные работы. Однако, пытаясь приспособить это к TestNG:

@WebAppConfiguration 
@ContextConfiguration({"classpath:applicationContext.xml"}) 
public class Test2 extends AbstractTestNGSpringContextTests 
{ 
    @Autowired 
    private MySessionBean state; 

    @Test 
    public void test() { 
     System.out.println(state.toString()); 
    } 
} 

Это сгенерирует исключение:

java.lang.IllegalStateException: запрос Нет нитка переплете найдено: Are Вы имеете в виду атрибуты запроса за пределами фактический веб-запрос, или обработка запроса за пределами первоначально принимающего потока?

Я делаю что-то неправильно или тестирует с помощью боковых зон с сессией, поддерживаемых только JUnit, а не TestNG?

ответ

2

Если вы не на Spring Framework 3.2.7 или новее, это не будет работать по умолчанию.

Подробнее см. SPR-11340.

В работе вокруг, вы можете объявить тестовый класс следующим

@WebAppConfiguration 
@ContextConfiguration("/applicationContext.xml") 
@TestExecutionListeners({ 
    ServletTestExecutionListener.class, 
    DependencyInjectionTestExecutionListener.class, 
    DirtiesContextTestExecutionListener.class 
}) 
public class Test2 extends AbstractTestNGSpringContextTests { /* ... */ } 

С уважением,

Sam

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