Dzięki zastosowaniu dwóch różnych klas z @WebMvcTest
(tj @WebMvcTest(FirstAction.class)
i @WebMvcTest(SecondAction.class)
) Jesteś szczególności wskazując, że chcesz różnych kontekstów aplikacji. W tym przypadku nie można udostępnić pojedynczego kontekstu, ponieważ każdy kontekst zawiera inny zestaw komponentów. Jeśli jesteś kontrolerem, fasola zachowuje się dość dobrze, wtedy kontekst powinien być względnie szybki i naprawdę nie powinno być problemu.
Jeśli naprawdę chcesz mieć kontekst, który można buforować i udostępniać we wszystkich testach internetowych, musisz upewnić się, że zawiera on dokładnie te same definicje komponentów bean. Dwie opcje, które przychodzą na myśl:
1) Użyj @WebMvcTest
bez określonego kontrolera.
FirstActionTest:
@RunWith(SpringRunner.class)
@WebMvcTest
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
@Autowired
private MockMvc mvc;
// ...
}
SecondActionTest:
@RunWith(SpringRunner.class)
@WebMvcTest
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
@Autowired
private MockMvc mvc;
// ...
}
2) Nie używaj @WebMvcTest
wcale tak masz kontekstu aplikacji, który zawiera wszystkie fasoli (nie tylko, dotyczy internetowych)
Pierwsza ActionTest:
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
@Autowired
private MockMvc mvc; // use MockMvcBuilders.webAppContextSetup to create mvc
// ...
}
SecondActionTest:
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
@Autowired
private MockMvc mvc; // use MockMvcBuilders.webAppContextSetup to create mvc
// ...
}
Należy pamiętać, że w pamięci podręcznej kontekst może uczynić prowadzenie wielu testów szybciej, ale jeśli wielokrotnie uruchomiony jeden test w czasie rozwoju, ty "ponoszą koszty wytworzenia dużej ilości ziaren, które natychmiast zostają odrzucone.
tak, jest to możliwe. http://stackoverflow.com/a/8502023/410677 – kuhajeyan
@kuhajeyan Link do konfiguracji opartej na xml, nawet w spring2.5 możemy to zrobić całkiem łatwo. Ale w przypadku wiosennego rozruchu zwykle nie ma pliku konfiguracyjnego dla kontekstu, nie wiem, jak to zaadaptować do wiosennego rozruchu. –
@EricWang szukasz tego samego? czy byłeś w stanie znaleźć na nie odpowiedź? – Ahmed