当前位置: 首页 > 知识库问答 >
问题:

MockMvc保持为空[关闭]

陈毅
2023-03-14

想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。

我想进行联调。我目前的方法:

@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();
    }

}

我放置了@AutoConfigreMockMvc,但MockMvc对象仍然为空

共有2个答案

宁兴修
2023-03-14

如果你用RunWith(SpringRunner.class)注释你的测试,你的mockMvc将不会为空。

商昂然
2023-03-14

我真的不明白这样测试的目的是什么,让我解释一下...

通常MockMvc用于测试应用程序的Web层。

这意味着Spring在后台运行一些东西,可以模拟发送到控制器的请求,这样您就可以检查注释是否正确放置,对象的转换是否以正确的方式完成,等等。换句话说,这就像测试控制器,但它与服务、DAO等无关。通常控制器对服务的引用可以用@MockBean进行注释,这样Spring将为服务创建一个存根,您将能够描述交互。无论如何,像DAO这样的其他东西都不应该从控制器中引用(不是 ?;) ) 但一般来说,模拟这些依赖关系的相同模式在这里也适用。

从技术上讲,它是这样完成的:web mvc测试(当正确注释时)不会加载整个应用程序上下文,而是加载其中的一部分——仅加载与web层相关的bean。

现在@SpringBootTest注释做了一些不同的事情。它专为Spring boot应用程序设计,并允许模仿整个Spring应用程序负载。超出我的想象(也许其他同事会丰富这个列表),它“添加”到常规应用程序上下文开始:

  • 属性配置管理
  • 启动器(自动配置模块)
  • Beans和配置的包结构特定扫描

总之,它允许在某些特定配置或整个应用程序之外启动Spring Boot测试,它只与web层无关。

所以,我不明白的是这里到底要测试什么。如果你的目标是测试一个Web层,那么你不必使用Spring Boot注释(除了我已经解释过的,Spring boot test需要更多的时间来加载)

如果您的目标是测试微服务的整体或特定部分,那么您可以使用@SpringBootTest`注释。

 类似资料:
  • 我觉得这家初创公司有问题。cs,因为我的

  • 我有一个简单的Spring测试 我想验证响应正文是否为空。例如。做一些类似的事情

  • 我已经检查了IntelliJ的调试器,并且可以确认mockMvc本身为空。因此,异常消息告诉我的只是“java.lang.NullPointerException”。 我已经尝试过为测试类添加更通用的Spring Boot注释,比如“@SpringBootTest”或“@RunWith(SpringRunner.class)”,以防与初始化Spring有关,但没有成功。

  • 我的短信有点小问题。在文本的某些部分,我使用了' '来确保该特定单词不会中断(或移动)到新行。举个例子,我做了这样的事情: 所以从理论上讲,这个文本('-is')不应该以一个单词的形式出现在一个新的行中,对吧?我想那是对的。但是...这个技巧给我带来了一个问题,就是在“-”和“is”之间增加了很大的空格...而且我当然不想有那个“大空位”。我将给出结果示例: 如你所见,有一个巨大的空间。所以,我的

  • 很抱歉淹没了spring批处理SO队列。 我离开了作业范围模式,因为这在3.0.6的XML配置中似乎不起作用。但我很可能会被搞糊涂。 我试着转到步进范围,因为这似乎是有效的。这是bean的app-context.xml配置头。这将启用选项。 是否需要在作业中初始化一些上下文?还是spring-batch与rest easy客户端正在利用的代理冲突?