@WebMvcTest
public class WhyWontThisWorkTest {
private static final String myUri = "uri";
private static final String jsonFileName = "myRequestBody.json";
@Autowired
private MockMvc mockMvc;
@Test
public void iMustBeMissingSomething() throws Exception {
byte[] jsonFile = Files.readAllBytes(Paths.get("src/test/resources/" + jsonFileName));
mockMvc.perform(
MockMvcRequestBuilders.post(myUri)
.content(jsonFile)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().is2xxSuccessful());
}
}
我已经检查了IntelliJ的调试器,并且可以确认mockMvc本身为空。因此,异常消息告诉我的只是“java.lang.NullPointerException”。
我已经尝试过为测试类添加更通用的Spring Boot注释,比如“@SpringBootTest”或“@RunWith(SpringRunner.class)”,以防与初始化Spring有关,但没有成功。
奇怪,前提是您还尝试过@runwith(SpringRunner.class)
和@springboottest
。您是否也尝试使用@autociguremockmvc
批注?下面的样品工作正常。
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void getHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello World of Spring Boot")));
}
}
此处提供完整示例
考虑以下关于使用@webmvctest和@autociguremockmvc注释的注释也是有价值的,如Spring文档中详细介绍的
通常,@webmvctest与@mockbean或@import结合使用,以创建@controller bean所需的任何协作者。
如果您希望加载完整的应用程序配置并使用MockMVC,那么应该考虑@SpringBootTest与@AutoConfiguremockmvc组合,而不是使用这个注释。
在使用JUnit4时,这个注释应该与@RunWith(SpringRunner.class)结合使用。
我的测试类看起来像这样 在设置方法中,wac 始终为空。从spring boot文档中,总是创建一个模拟。 所以我希望它会在上面的代码中自动绑定,但这不会发生。 有人可以告诉我在这种情况下如何创建,以便它不像我的情况那样为空吗? 我正在运行spring boot测试,从带有springboot注释的类中调用它们。 测试(springboottest)和调用类(springboot)应用程序都位于下
有一个@Value注释的常量,在运行测试时不会初始化,当构造函数中需要它时,它会抛出NullPointerException。 要测试的示例类: 示例测试类: 事情尝试了,但没有任何效果: 我已经创建了应用程序。具有所需值的属性文件 创建应用程序测试。属性,并添加了TestPropertySource(locations=“classpath:application test.properties
我需要jUnit测试的帮助,我的结果是json文件,我需要测试该文件的长度,问题是在jsonPath函数中没有这样的方法。 这里是我的测试方法,预期长度是7。如有任何帮助,我将不胜感激,谢谢
使用@SpringBootTest,据我所知,Spring实际上是在启动应用程序,并且应该创建映射器类,所以我不明白,为什么映射器总是空?!当我删除@SpringBootTest中的DummyMapper.class时,会出现一个错误,上面写着“Failed to load application Context”。这向我表明,映射器是被识别的。 我觉得奇怪的另一件事是,我必须在映射器中使用“un
问题内容: 我正在运行一个简单的JUnit测试,又是一个应用程序DAO。问题是我总是得到: JUnit测试是: 如你所见,我明确声明不回滚此方法。 Spring JUnit支持是否总是将rollback设置为true? 问题答案: 它应该可以正常工作,就像你期望的那样,但是可能是你在被测类中打开了另一个事务,或者某个地方有其他功能/或错误。 顺便说一句,这个注释应该是足够的:
有没有人有任何提示,或者有人知道如何测试HTTP响应对象返回的“错误消息”? 响应: