2017-02-09 9 views
3

私のサービスのテストを作成しようとしています。このサービスは、jdbcTemplateを使用してDBにアクセスするautowiredリポジトリを使用します。問題は、テストが実際に実際のDBにデータを置くことです。ここ
は私のテストクラスです: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()); 
} 
} 

は、私が実際のDBと連携するUserServiceのを防ぎ、何とかだけでシミュレーションをするために何かできることはありますか?

答えて

1

ベスト・オプションは、テストで異なるDataSource Beanを使用することです。アプリケーションはメモリDB(通常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依存関係を追加する必要がありましたが、これは正しい方法で私に感謝してくれました。 – gygabyte

関連する問題