SpringBoot测试服务(使用带有JDBCTemplate的存储库)

时间:2017-02-09 13:45:24

标签: java spring testing service spring-boot

我正在尝试为我的某项服务编写测试。该服务使用自动装配的存储库,该存储库使用jdbcTemplate来访问数据库。问题是测试实际上将数据放入真实的数据库中 这是我的测试类:

@SpringApplicationConfiguration(Application.class)
@SpringBootTest(classes = { UserServiceImpl.class, UserService.class })
@RunWith(SpringJUnit4ClassRunner.class)
public class UserServiceTest {
@Autowired UserService userService;

@Test
public void test() {
    final String fName = " xxxxxx ";        

    User user = new User();
    user.setFirstName(fName);
    user.setLastName(fName);
    user.setEmail(fName);
    user.setLogin(fName);
    user.setPhone(fName);
    userService.create(user);

    user = userService.getUserByLogin(fName).get();
    assertEquals(fName, user.getLogin());   
 }
}

我能做些什么来阻止userService使用真正的数据库并以某种方式进行模拟?

1 个答案:

答案 0 :(得分:1)

最佳选择是在测试中使用不同的DataSource bean。您的应用程序将针对内存DB(通常为H2)中的某些进行测试。只需在@TestConfiguration public class DataSourceConfig { @Bean @Primary public DataSource dataSource() { return new EmbeddedDatabaseBuilder() .generateUniqueName(true) .setType(H2) .build(); } }

中的某处创建此测试配置即可
{{1}}