JUnit测试用例未在控制器中检测方法

时间:2019-02-15 11:26:45

标签: java spring-boot junit testcase spring-boot-test

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:预期状态:<200>,但为:<404>”

但是“命令2”成功完成。

我的问题是

  
    

RestController前缀路径+控制器前缀路径=整个路径。

  

要调用API,我们必须遵循上述格式,但是如果遵循相同的内容,为什么Junit也会失败?

有人可以在这里丢下一些输入吗?

2 个答案:

答案 0 :(得分:2)

在您的情况下,/path1/path2是控制器bean的名称。要为控制器内的所有方法添加通用前缀路径,您可以放置​​

@RequestMapping("/path1/path2")

在您的控制器上。

答案 1 :(得分:2)

@RestController
@RequestMapping("/path1/path2")
public class SomeController
{

@GetMapping("/path3/path4")
public String doSomething()
{
//code goes here
}

}

问题不是您的测试班。问题是requestMapping的用法错误。