小编典典

如何使用Spring Boot测试Maven模块项目

spring-boot

我已经将基于Spring Boot的项目拆分为几个Maven模块。现在,只有war-
project包含启动程序类(具有主方法,启动Spring),其他模块的类型为jar。

如果不包含启动器,如何测试jar项目?

JUnit测试用例标头示例:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(StarterClassInDifferentProject.class)
...

阅读 328

收藏
2020-05-30

共1个答案

小编典典

我认为上下文测试应该在每个模块中可用,因此您可以及早发现电线和配置问题,而不必依赖完整的应用程序测试来查找它们。

我在同一模块中使用测试应用程序类来解决此问题。确保该主类位于您的 测试 目录中。

@SpringBootApplication()
@EnableAutoConfiguration()
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}

您的上下文现在应该可以正常工作。

@RunWith(SpringRunner.class)
//@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
//@TestExecutionListeners({DependencyInjectionTestExecutionListener.class})
//@ContextConfiguration()
@ActiveProfiles(profiles = {Profiles.WEB_REST})
//@TestPropertySource("/config/rest.yml")
@WebMvcTest(EntityController.class)
@DirtiesContext
public class ServicesControllerTest {

    @Autowired
    private MockMvc mvc;

    @MockBean
    private Controller controller;

    @Test
    public void testAll() throws Exception {
        given(controller.process(null)).willReturn(null);

        mvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk());
    }
}
2020-05-30