1. 序章

このクイック記事では、Spring5で使用可能な新しい@ SpringJUnitConfigおよび@SpringJUnitWebConfigアノテーションを確認します。

これらのアノテーションは、JUnit5とSpring5のアノテーションを組み合わせたものであり、テストの作成をより簡単かつ迅速に行うことができます。

2. @SpringJUnitConfig

@SpringJUnitConfig は、次の2つのアノテーションを組み合わせたものです。

  • JUnit 5@ExtendWith(SpringExtension.class)を使用して、SpringExtensionクラスと
  • @ContextConfiguration from Spring Testing to load Spring context

テストを作成して、このアノテーションを実際に使用してみましょう。

@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class)
public class SpringJUnitConfigIntegrationTest {

    @Configuration
    static class Config {}
}

@ContextConfigurationとは対照的に、構成クラスはvalue属性を使用して宣言されることに注意してください。ただし、リソースの場所はlocation属性で指定する必要があります。

これで、Springコンテキストが実際にロードされたことを確認できます。

@Autowired
private ApplicationContext applicationContext;

@Test
void givenAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(applicationContext);
}

最後に、 @SpringJUnitConfig(SpringJUnitConfigTest.Config.class):と同等のコードがあります。

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)

3. @SpringJUnitWebConfig

@SpringJUnitWebConfig は、@SpringJUnitConfigの同じアノテーションとSpringテストの@WebAppConfigurationを組み合わせて、WebApplicationContextをロードします。

この注釈がどのように機能するかを見てみましょう。

@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class)
public class SpringJUnitWebConfigIntegrationTest {

    @Configuration
    static class Config {
    }
}

@SpringJUnitConfig と同様に、構成クラスは値属性に入り、リソースはlocation属性を使用して指定されます。

また、@WebAppConfigurationvalue属性は、resourcePath属性を使用して指定する必要があります。 デフォルトでは、この属性は「src / main/webapp」に設定されています。

WebApplicationContextが実際にロードされたことを確認しましょう。

@Autowired
private WebApplicationContext webAppContext;

@Test
void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(webAppContext);
}

ここでも、@SpringJUnitWebConfigを使用しない同等のコードがあります。

@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)

4. 結論

この簡単なチュートリアルでは、Spring5で新しく導入された@SpringJUnitConfigおよび@SpringJUnitWebConfigアノテーションの使用方法を示しました。

例の完全なソースコードは、GitHubから入手できます。