我想执行一个集成测试。我目前的方法是:
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Application.class)
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath: application-test.yml")
public class UserControllerIntegrationTest {
@Autowired
MockMvc mockMvc;
@Test
@DisplayName(" sda")
public void test1(){
System.out.println();
}
}我放置了@AutoConfigureMockMvc,但MockMvc对象仍然为空
发布于 2019-08-20 16:01:52
我真的不明白这样测试的目的是什么,让我解释一下……
通常,MockMvc用于测试应用程序的web层。
像DAO这样的其他东西无论如何都不应该从控制器中引用(不是吗?;) ),但一般来说,模拟这些依赖关系的相同模式在这里也适用。
从技术上讲,它是这样完成的: web mvc测试(当正确注释时)不会加载整个应用程序上下文,而是加载它的一个“切片”--只加载与web层相关的bean。
现在,@SpringBootTest注释做了一些不同的事情。它是专门为spring boot应用程序设计的,可以模拟整个spring应用程序的负载。在我的脑海中(也许其他同事会丰富这个列表),它“添加”到常规的应用程序上下文中:
Bean和configurations的
归根结底,它允许在一些特定的配置或整个应用程序之外启动Spring Boot Test,它与web层无关,只有。
所以,我不明白的是,这里到底要测试什么。如果你的目标是测试web层,那么你不必使用Spring Boot注解(除了我已经解释过的,spring boot测试需要更多的时间来加载)
如果您的目标是测试整个微服务,或者有时是它的一个特定部分,那么您可以使用@SpringBootTest`注释。
发布于 2019-08-20 15:45:27
如果你用@RunWith(SpringRunner.class)注释你的测试,你的mockMvc将不会是空的。
https://stackoverflow.com/questions/57568119
复制相似问题