2017-02-09 61 views
3

我正在嘗試爲我的某個服務編寫測試。該服務使用使用jdbcTemplate訪問數據庫的自動裝載存儲庫。問題是測試實際上將數據放入真實的數據庫中。
這裏是我的測試類:SpringBoot測試服務(使用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與真正DB工作,並在某種程度上只是做一個模擬?

回答

1

最好的選擇是在測試中使用不同的DataSource bean。您的應用程序將針對內存數據庫中的一些進行測試(通常爲H2)。只需在您的src/test/java/yourRootPackage某處創建此測試配置:

@TestConfiguration 
public class DataSourceConfig { 

    @Bean 
    @Primary 
    public DataSource dataSource() { 
     return new EmbeddedDatabaseBuilder() 
      .generateUniqueName(true) 
      .setType(H2) 
      .build(); 
    } 
} 
+0

謝謝!我還需要實現一個JdbcTemplate @Bean並添加H2 dependency tho,但是,這讓我以正確的方式,謝謝。 – gygabyte