web-dev-qa-db-ja.com

Spring Boot Test1.4でSpringBootConfigurationが見つかりません

Spring Boot1.4で簡単なテストを実行できません。公式サイト testing-the-spring-mvc-slice のチュートリアルに従いましたが、動作しませんでした。

次のエラーが発生するたびに:

Java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

何かアイデア、ヒントはありますか?

前もって感謝します

編集:

これはコントローラーです

@Controller
public class UserManagementController {

@GetMapping(value = "/gs/users/getUsers")
    public @ResponseBody String getAllUsers() {
        return "test";
    }
}

これはテストです

@RunWith(SpringRunner.class)
@WebMvcTest(UserManagementController.class)
public class UserManagementControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void showUserView() throws Exception {
        this.mvc.perform(get("/gs/users/getUsers"))
            .andExpect(status().isOk())
            .andDo(print());
    }
}

私の観点からは、サイトからのこの投稿とまったく同じです。

@WebMvcTest しましょう:

  • Spring MVC、Jackson、Gson、メッセージコンバーターなどを自動構成します。
  • 関連するコンポーネントをロードします(@Controller@RestController@JsonComponentなど)
  • MockMVCを構成する

「スーパー」クラスを構成する必要がある理由

5
Manu Zi

検索アルゴリズムは、テストを含むパッケージから、@ SpringBootApplicationまたは@SpringBootConfigurationアノテーション付きクラスが見つかるまで機能します。賢明な方法でコードを構成している限り、通常はメインの構成が見つかります。

したがって、テストに@ * Testという注釈を付けました。実行され、サブクラスの構成がチェックされましたが、何も見つかりませんでした。例外がスローされました。

テストクラスのパッケージまたはサブパッケージに構成を含めるか、構成クラスを@ContextConfigurationまたは@SpringBootTestに直接渡すか、クラスに@SpringBootApplicationアノテーションを付ける必要があります。

@SpringBootApplicationによると。 @WebMvcTestで言及した方法でコントローラーをテストしました。アプリケーションに@SpringBootApplicationと注釈が付けられたクラスがある場合は機能し、そうでない場合は例外で失敗します。あなたが言及した記事に注意があります:

この例では、クラスを省略しています。つまり、テストは最初に任意の内部クラスから@Configurationをロードしようとし、それが失敗した場合は、プライマリ@SpringBootApplicationクラスを検索します。

Github ディスカッション ほぼ同じ点。

Spring Bootドキュメント

11
Sergii Getman