web-dev-qa-db-ja.com

Spring Boot 2.1.0にはJUnit5の依存関係がありますが、それを取り除く方法は?

Spring Boot 2.1.0(2.0.xになる前)を使用するようにプロジェクトをアップグレードしたところ、コンパイルがあります警告:

[WARNING] Cannot find annotation method 'value()' in type 'org.junit.jupiter.api.extension.ExtendWith': class file for org.junit.jupiter.api.extension.ExtendWith not found

警告を解決するために依存関係org.junit.jupiter/junit-jupiter-apiを追加できますが、それは「ハック」だと感じています。

私はその警告を見たくありません(特に私のプロジェクトが警告をエラーのように扱うこと)そして私は私のプロジェクトを不必要な依存関係で汚染したくありません。

私はMavenを使用していますが、誰かがGradleで同じ問題を抱えていることがわかります https://www.reddit.com/r/Java/comments/9sogxf/spring_boot_210_released_now_with_Java_11_support/

10
razor

プロジェクトにorg.junit.jupiter:junit-jupiter-api依存関係を追加すると、警告は消えます。これはAPIjarのみであり、テストスコープ内にあるため、問題はありません。

7
DAN

@SpringBootTestを使用してclasses=を設定する場合:

@SpringBootTest(classes = {
        MyAutoConfiguration.class,
        MyAutoConfigurationIntegrationTest.TestContextConfiguration.class
    })

答えはその apiドキュメント でほのめかされています:

SpringBootベースのテストを実行するテストクラスで指定できるアノテーション。通常のSpringTestContextFrameworkに加えて次の機能を提供します。

特定の@ContextConfiguration(loader = ...)が定義されていない場合、デフォルトのContextLoaderとしてSpringBootContextLoaderを使用します。

ネストされた@Configurationが使用されておらず、明示的なクラスが指定されていない場合、@ SpringBootConfigurationを自動的に検索します。

Junit5の@ContextConfigurationに依存しない @ExtendsWith を使用できます。

@RunWith(SpringRunner.class)
@ContextConfiguration(loader = SpringBootContextLoader.class,
    classes = {
        MyAutoConfiguration.class,
        MyAutoConfigurationIntegrationTest.TestContextConfiguration.class
    })
1
Alun