我正在使用SpringBoot1.5开发一个RESTful服务应用程序。4.
我的资源类中的一个方法(findAll)接受Pagable参数,并使用它来调用服务方法。在单元测试此方法时,我得到了BeanInstantiationExcema。
这是我的资源课-
@RestController
@RequestMapping("/api/v1/users")
public class UserResource {
private final UserService userService;
@Autowired
public UserResource(UserService userService) {
this.userService = userService;
}
@GetMapping("")
public ResponseEntity<List<User>> findAll(Pageable pageable) {
log.debug("REST request to get a page of Users");
Page<User> page = userService.findAll(pageable);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/v1/users");
return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK);
}
}
这是我的服务类-
@Service
@Transactional
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
@Autowired
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
@Transactional(readOnly = true)
public Page<User> findAll(Pageable pageable) {
return userRepository.findAll(pageable);
}
}
这是我的测试课-
@RunWith(SpringRunner.class)
@WebMvcTest(UserResource.class)
public class UserResourceTest {
private static final ObjectMapper mapper = new ObjectMapper();
@Autowired
private MockMvc mvc;
@MockBean
private UserService userService;
private static final Long DEFAULT_ID = 1L;
private static final String DEFAULT_EMAIL = "test@test.com";
private static final String DEFAULT_FIRSTNAME = "john";
private static final String DEFAULT_LASTNAME = "doe";
private static final String DEFAULT_PASSWORD = "ABCDEFGHJIABCDEFGHJIABCDEFGHJIABCDEFGHJIABCDEFGHJIABCDEFGHJI";
private static final UserStatus DEFAULT_STATUS = UserStatus.ACTIVE;
private static final String DEFAULT_PHONE = "12345679";
public static User createUserWithOutId() {
User user = new User();
user.setEmail(DEFAULT_EMAIL);
user.setFirstName(DEFAULT_FIRSTNAME);
user.setLastName(DEFAULT_LASTNAME);
user.setPassword(DEFAULT_PASSWORD);
user.setStatus(DEFAULT_STATUS);
user.setPhone(DEFAULT_PHONE);
return user;
}
public static User createUserWithId() {
User user = createUserWithOutId();
user.setId(DEFAULT_ID);
return user;
}
@Test
public void findAll_WhenUsersExist_ShouldReturnUsersList() throws Exception {
final User user = createUserWithId();
List<User> users = Arrays.asList(user);
Page<User> page = new PageImpl<>(users, new PageRequest(0, 10), users.size());
when(userService.findAll(any(PageRequest.class)))
.thenReturn(page);
mvc.perform(get("/api/v1/users").accept(MediaType.APPLICATION_JSON_VALUE))
.andExpect(status().isOk());
}
}
异常的堆栈跟踪-
Tests run: 7, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.76 sec <<< FAILURE! - in bd.com.ronnie.accountservice.web.rest.UserResourceTest
findAll_WhenUsersExist_ShouldReturnUsersList(bd.com.ronnie.accountservice.web.rest.UserResourceTest) Time elapsed: 0.041 sec <<< ERROR!
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:99)
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:141)
at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:81)
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:101)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:158)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:65)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:155)
at bd.com.ronnie.accountservice.web.rest.UserResourceTest.findAll_WhenUsersExist_ShouldReturnUsersList(UserResourceTest.java:97)
MockMvc。类不是由spring管理的,如果您使用@Autowired标记该类,则该字段不能被注入,因此它告诉您“指定的类是一个接口”。这里有一个例子。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@WebAppConfiguration
public class Test {
@Autowired
private WebApplicationContext context;
private MockMvc mvc;
@Before
public void setup() {
mvc = MockMvcBuilders
.webAppContextSetup(context)
.build();
}
}
如果它不工作,我猜get(“/api/v1/users”)
不会创建requestAttr
的页面请求,因为接口UserResource。findAll
需要可分页的。
get("/api/v1/users").requestAttr("pageable", new PageRequest(1,2))
最近,我尝试为akka参与者编写一些单元测试,以测试参与者消息流。我在测试中观察到一些奇怪的行为: 下一个 在我的代码中,我有: 基本上,有时(很少)这样的测试失败(在另一个操作系统上),并且抛出processMessage方法的异常(由于业务逻辑导致的IllegalStateException)。
我有一个单元测试,正在检查几个不同服务的控制器构造函数的空异常。 在我的控制器构造函数中,我有: 我对每个都有一个单元测试,但是我如何区分两者。我可以保留测试,因为任何一个检查都可能抛出null,所以我想通过参数名测试异常。 这可能吗?
我正在根目录下的test文件夹中使用Jest单元测试,并尝试在多个分支上对节点进行单元测试。Are项目设置在git存储库中。当我的团队完成一个分支后,他们会将其与master合并。通常,如果我使用代码,我会在master上工作,但我想在它们的分支上做一些事情。通常,如果代码不完整,我不会接触其他分支,但由于这是为了单元测试他们的代码,而不是开发代码,我认为查看他们在分支1和分支2上的最新提交是可以
我有这样一个简单的课程: 我想为它写一个测试,下面是一个框架: ErrorLogger类中的logger是由StaticLoggerBinder提供的,所以我的问题是-如何让它工作,以便那些检查“1*logger.error(u作为字符串)”可以工作?在ErrorLogger类中,我找不到一种恰当的方式来嘲笑那个记录器。我曾考虑过反射,并以某种方式访问它,此外,mockito注入也有一个想法(但如
我有一个请求表单的映射: 现在我想用MockMvcBuilders为此编写一个测试。不过,我不能这样做。 这里的挑战是请求处理程序需要使用Multipart/form-data,它由4个Multipart Files和1个Json数据组成。 有没有办法解决这个问题?请记住,我必须使用Spring 4.3。 如果您需要更多信息,请告诉我。
目前正在搜索教程、解释和示例。我试过不同的例子,遇到了不同的错误。我当前的错误是: |错误编译错误编译[单元]测试:启动失败: 在我的测试报告中。它输出: 单元测试结果-摘要未执行测试。 我的“用户pec.groovy”代码是这样的: 有人能帮忙吗。我是圣杯新手。谢谢 除上述问题外,当我在课堂上省略了如下所示的禁忌: 我发现了这个错误: |运行1单元测试...1 of 1|失败:初始化错误(org