Java JUnit测试用例不是控制器中的检测方法
新的弹簧靴 控制器中的API看起来像Java JUnit测试用例不是控制器中的检测方法,java,spring-boot,junit,testcase,spring-boot-test,Java,Spring Boot,Junit,Testcase,Spring Boot Test,新的弹簧靴 控制器中的API看起来像 @RestController("/path1/path2") public class SomeController { @GetMapping("/path3/path4") public String doSomething() { //code goes here } } @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_POR
@RestController("/path1/path2")
public class SomeController
{
@GetMapping("/path3/path4")
public String doSomething()
{
//code goes here
}
}
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes =
xxx.class)
@AutoConfigureMockMvc(secure = false)
public class AuthServiceTestCase
{
@Autowired
private MockMvc mock;
@Test
public void testDoSomething()
{
//Command 1
mock.perform(get("/path1/path2/path3/path4")).andExpect(status().isOK());
//Command 2
mock.perform(get("/path3/path4")).andExpect(status().isOK());
}
}
测试用例看起来像
@RestController("/path1/path2")
public class SomeController
{
@GetMapping("/path3/path4")
public String doSomething()
{
//code goes here
}
}
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes =
xxx.class)
@AutoConfigureMockMvc(secure = false)
public class AuthServiceTestCase
{
@Autowired
private MockMvc mock;
@Test
public void testDoSomething()
{
//Command 1
mock.perform(get("/path1/path2/path3/path4")).andExpect(status().isOK());
//Command 2
mock.perform(get("/path3/path4")).andExpect(status().isOK());
}
}
现在,在运行测试用例命令1之后,我得到了以下内容
java.lang.AssertionError:状态应为:但为:
但命令2如期成功
我的问题是,
RestController前缀路径+控制器前缀路径=整个路径
对于调用API,我们必须遵循上述格式,但如果遵循相同的格式,为什么Junit会失败呢
是否有人可以在这里删除一些输入?在您的例子中/path1/path2是控制器bean的名称。要为控制器内的所有方法添加常规前缀路径,可以将
@RequestMapping("/path1/path2")
在您的控制器上。在您的例子中/path1/path2是控制器bean的名称。要为控制器内的所有方法添加常规前缀路径,可以将
@RequestMapping("/path1/path2")
@RestController
@RequestMapping("/path1/path2")
public class SomeController
{
@GetMapping("/path3/path4")
public String doSomething()
{
//code goes here
}
}
在你的控制器上
@RestController
@RequestMapping("/path1/path2")
public class SomeController
{
@GetMapping("/path3/path4")
public String doSomething()
{
//code goes here
}
}
问题不在于你的测试课。问题在于requestMapping的错误使用
问题不在于你的测试课。问题是requestMapping的用法错误。你能粘贴模拟定义吗?@Andronicus:Hi,谢谢回复。更新了问题。你能粘贴模拟定义吗?@Andronicus:Hi,谢谢回复。更新了问题,成功了。谢谢。请解释一下,RestController Prefix Path+Controller Prefix Path=整个路径这个模式是如何用于调用API而不是用于调用测试用例的。@NANDAKUMAR你能检查一下这个帖子吗?成功了。谢谢。请解释一下,RestController Prefix Path+Controller Prefix Path=整个路径这个模式是如何用于调用API而不是用于调用测试用例的。@NANDAKUMAR你能检查一下这个帖子吗?