Как перевернуть сервлет в тестах при использовании Spring-boot? - PullRequest
0 голосов
/ 30 мая 2019

Как переопределить сервлет в тестах junit при использовании @ServletComponentScan?

У меня есть веб-приложение Spring-boot, которое загружает настройки сервлета следующим образом:


@SpringBootApplication
@ServletComponentScan({"my.example"})
public class MyServer extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(MyServer.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyServer.class);
    }
}



package my.example;

@WebServlet(
        urlPatterns = "/myserver",
        initParams =
                {
                        @WebInitParam(name = "testParam", value = "x")
                }
)
package my.example;

public class MyServlet extends HttpServlet {
  ...
}

В этом веб-приложении сервлет загружается с initParam 'testParam' = 'x'.

Я пытаюсь написать тест, в котором сервлет загружается с initParam 'testParam' = 'y'.

Ниже приведен код теста.



@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyServer.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyServerTest {
    ...
}


package my.example;

@Primary
@WebServlet(
        urlPatterns = "/myserver",
        initParams =
                {
                        @WebInitParam(name = "testParam", value = "y")
                }
)
public class MyTestServlet extends MyServlet {
}

Однако MyTestServlet не загружается. Как мне решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...