JUnit 测试用例未检测控制器中的方法
Posted
技术标签:
【中文标题】JUnit 测试用例未检测控制器中的方法【英文标题】:JUnit Test Case is not detecting method in controller 【发布时间】:2019-07-09 12:55:21 【问题描述】:Spring Boot 新手。
控制器中的 API 看起来像,
@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 会失败?
有人可以在这里丢掉一些输入吗?
【问题讨论】:
你能粘贴模拟定义吗? @Andronicus:您好,谢谢您的回复。更新了问题。 【参考方案1】:@RestController
@RequestMapping("/path1/path2")
public class SomeController
@GetMapping("/path3/path4")
public String doSomething()
//code goes here
问题不在于您的测试课程。问题是 requestMapping 的错误使用。
【讨论】:
成功了。谢谢。您能否解释一下,(RestController Prefix Path + Controller Prefix Path = Entire Path)这个模式如何用于调用 API 而不是用于测试用例调用。 @NANDAKUMAR 你能看看这篇文章吗? ***.com/questions/45210005/…【参考方案2】:在您的情况下,/path1/path2
是控制器 bean 的名称。要为控制器内的所有方法添加通用前缀路径,您可以放置
@RequestMapping("/path1/path2")
在您的控制器上。
【讨论】:
以上是关于JUnit 测试用例未检测控制器中的方法的主要内容,如果未能解决你的问题,请参考以下文章
HP Quality Center 12.20 Excel Uploader - 测试用例未显示在测试实验室中
我是 JUnit 测试的新手。我无法编写成功的测试用例,我创建的测试用例返回空指针异常
为 Java 中的自定义检查异常编写 JUnit 测试用例?