Spring bootで作成したアプリケーションのテストを行う際にテストクラスに@Autowiredを使用する

開発

Spring bootで作成したアプリケーションのテストを行う際に、
そのアプリケーションで使用しているRepositoryクラスを用いてテスト用データを登録したり、Injectionを行いたい場合があります。
その際に基礎となるアノテーションについて書きます。

大体はここに書いてあるのですが、
まずはspring-testへの依存関係を記載します。

(build.gradle)

dependencies {
    ...
    testCompile 'org.springframework:spring-test:4.0.8.RELEASE'
}

テストクラスに対しては、SpringJUnit4ClassRunnerをTestRunnerとすることと、
@SpringApplicationConfigurationでSpring bootのApplicationConfigurationの指定を行います。

これでconfigurationに書いたPackageScanやEntityScanの設定が有効になり、
@AutowiredでInjectionすることが可能になります。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class RecurringTest extends TestCase {
  @Autowired
  HogeRepository hogeRepository;

  @Test
  public void test2() throws Exception {
    Hoge hoge = hogeRepository.findOne("hoge");
    ...
  }
}

コメント

タイトルとURLをコピーしました