Как переопределить сервлет в тестах 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 не загружается. Как мне решить эту проблему?