2017-02-08 44 views
0

Моего тестового класса выглядит следующим образомWebApplicationContext всегда нуль в тесте весной загрузки

@SpringBootTest(webEnvironment=WebEnvironment.MOCK) 
public class sampleClassTest{ 

    @Autowired 
    private WebApplicationContext wac; 
} 

@Before 
public void setup() { 
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); 

} 

В способе настройки WAC всегда нуль. Из весенней загрузки документации, @SpringBootTest(webEnvironment=WebEnvironment.MOCK) всегда создавал макет WebapplicaitonContext.

Так что я ожидал бы, что он будет автоуведомлен в коде выше, которого не произойдет.

Может ли кто-нибудь сказать мне, как сделать создание webapplicationContext в этом случае, чтобы он не был нулевым, как в моем случае?

UPDATE

Я бег тестов загрузки пружинных их вызов из класса с springboot аннотацией.

Оба теста (springboottest) и вызов класса (springboot) применяются в том же весеннем загрузочном проекте под номером src/main/java.

У меня ничего нет src/main/test. Я сделал так, потому что если классы из src/main/java хотят вызвать тестовый класс, это не действительно тестовый класс.

Теперь проблема заключается в том, что я не могу использовать runWith(SpringRunner.class) в классе springbootTest. Если бы я сделал это, чтобы получить макет webApplicationContext то, что это дает мне эту ошибку:

javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication 

Я не уверен, как это сделать по этому поводу.

+0

Добавить '@ WebAppContext' в тестовый пример. Однако вы также можете просто '@ Autowire' класс' MockMvc' с Spring Boot (вам не нужно создавать его вручную). –

+0

Мне все еще нужен webApplicationContext для регистрации beans in to. Поэтому моя главная проблема - получить webApplicationContext. – Hary

ответ

1

Чтобы использовать @SpringBootTest, вам необходимо использовать тестовый бегун Spring Framework. Аннотировать свой тестовый класс: @RunWith(SpringRunner.class).

+0

На самом деле, я пишу несколько приемочных испытаний для своего приложения. Поэтому у меня есть класс, украшенный аннотацией SpringBootapplication, которая внутренне вызывает класс, украшенный аннотацией springboottest, который является кодом, который я уже вставил выше. В этом случае, если я использовал Runwith (SpringRunner.class), я получаю ошибку javax.management.InstanceAlreadyExistsException: org.springframework.boot: type = Admin, name = SpringApplication – Hary

+0

Это, очевидно, не сработает. '@ SpringBootTest' для модульного теста не используется для произвольных классов, то же самое для' @ Before', который используется для jUnit, а не для произвольных классов. Почему бы вам не создать тест как тест и не использовать то, что вы пытаетесь построить сейчас ... –

+0

Я пытаюсь запустить некоторые приемочные тесты из основного класса springboot с использованием класса JUnitCore. Похоже, мой подход использования класса springbootTest в этом случае не будет работать. – Hary

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

  • Нет связанных вопросов^_^