Egi*_*ris 8 java spring unit-testing jpa spring-mvc
我是Spring框架的新手.我需要为JPA存储库编写单元测试.我正在尝试简单的存储库saveAndFlush()方法.但我的存储库中没有任何东西存 这是我的源代码:
TestContext.class
@Configuration
@PropertySource("classpath:log4j.properties")
public class TestContext {
@Bean
public RoleService roleService() {
return Mockito.mock(RoleService.class);
}
@Bean
public RightService RightService() {
return Mockito.mock(RightService.class);
}
@Bean
public RoleRepository RoleRepository() {
return Mockito.mock(RoleRepository.class);
}
}
Run Code Online (Sandbox Code Playgroud)
RoleServiceTest.class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestContext.class})
@WebAppConfiguration
public class RoleServiceTest {
@Autowired
private RoleRepository roleRepository;
@Test
public void TestServices() throws Exception {
RoleDetails first = new RoleDetails();
first.setId("1");
first.setDescription("First Description");
first.setName("First");
roleRepository.saveAndFlush(new RoleEntity(first));
roleRepository.save(new RoleEntity(first));
List<RoleEntity> roles = new ArrayList<RoleEntity>();
roles = roleRepository.findAll();
System.out.println(roles);
assertEquals(1, roles.size());
}
}
Run Code Online (Sandbox Code Playgroud)
并且错误:
java.lang.AssertionError: expected:<1> but was:<0>
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定,因为testContext.Class会出现问题.我用这个类测试我的控制器,它运行良好,但现在我需要测试我的数据库,我不知道如何修改contextConfiguration.我希望somone会帮助我.提前致谢!
小智 7
问题来自TestContext确实.您尝试使用模拟对象保存对象,这是不正确的.
解决方案是使用真实的存储库.为此,您需要按照以下步骤操作:
我希望我的回答有所帮助,如果你还需要帮助,请随时再问!
您的存储库是一个模拟对象.根据定义,模拟对象是一个不执行通常应该执行的操作的对象,而是在测试中执行的操作.
要测试存储库,存储库必须是真实存储库.因此,您的上下文类应该具有
@Bean
public RoleRepository RoleRepository() {
return new RoleRepositoryImpl(); // or whatever the class implementing the repository is
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13083 次 |
| 最近记录: |