我正在使用junit 4为控制器创建测试。下面是TestController测试类。
@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(EmployeeController.class)
public class TestEmployeeController {
@Autowired
private MockMvc mvc;
@MockBean
private EmployeeService service;
@BeforeClass
public static void beforeTest() {
System.out.println("Starting test engine");
}
@AfterClass
public static void AfterTest() {
System.out.println("Terminating test engine");
}
@Test
public void testfindEmployeeById() {
System.out.println("here");
Employee emp = new Employee();
emp.setId(1);
given(service.findById(emp.getId())).willReturn(emp);
try {
mvc.perform( MockMvcRequestBuilders
.get("/employee/findById/{id}", emp.getId())
.accept(MediaType.APPLICATION_JSON))
.andReturn();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当我尝试从Eclipse运行测试时出现问题,出现以下错误。我还用前缀测试重命名了该方法,但仍然无法正常工作。
我想这个问题可能是由于webmvc注释引起的,但不确定。 在Eclipse控制台中,记录器提供以下信息。
调试org.springframework.test.context.support.ActiveProfilesUtils-找不到注释类型[org.springframework.test.context.ActiveProfiles]和类[com.SpringHiber.testController]的“注释声明类” .TestEmployeeController]
我也尝试在控制器中注释@Profile和在testController方法中注释@ActiveProfiles。但这没有帮助。
有关我遇到的异常的详细信息如下。
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testfindEmployeeById], {ExactMatcher:fDisplayName=testfindEmployeeById(com.SpringHiber.testController.TestEmployeeController)], {LeadingIdentifierMatcher:fClassName=com.SpringHiber.testController.TestEmployeeController,fLeadingIdentifier=testfindEmployeeById]] from org.junit.internal.requests.ClassRequest@2aceadd4
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:80)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:71)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
下面,我要发布其余的控制器类。
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired EmployeeService eService;
@GetMapping(path= {"/findById/{id}"},produces= {MediaType.APPLICATION_JSON_VALUE})
public Employee findById(@PathVariable int id) {
return eService.findById(id);
}
}
请让我知道上面代码中缺少什么?