如何创建和使用专门用于测试的控制器?

时间:2018-12-14 15:38:29

标签: java spring junit

我想对包含控制器的上下文进行Spring测试。 该控制器在测试之外不可见,仅用于测试目的。 因此,当我通过 mockMvc 执行请求时,此请求将到达控制器。

我应该如何定义控制器?我不想将其放在测试包之外,因为我在那里不需要它。

1 个答案:

答案 0 :(得分:0)

您可以通过测试配置文件标记控制器,并且该bean不会在生产模式下实例化:

@Profile("test")
@RestController
@RequestMapping("/apiUrl")
public class TestController {
  ...
}

此外,如果您使用Spring Boot,则可以在测试中立即使用TestConfiguration

@SpringBootTest
@ExtendsWith(SpringExtension.class)
public class ApiTest {

    @Test
    void testApi() {
        // send request to test API
    }

    @TestConfiguration
    public static class TestConfig {        

        @RestController
        @RequestMapping("/apiUrl")
        public class TestController {

            @GetMapping("/test")
            public String test() {
                return "STUB";
            }
        }
    }
}