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
しましょう:
@Controller
、@RestController
、@JsonComponent
など)「スーパー」クラスを構成する必要がある理由
検索アルゴリズムは、テストを含むパッケージから、@ SpringBootApplicationまたは@SpringBootConfigurationアノテーション付きクラスが見つかるまで機能します。賢明な方法でコードを構成している限り、通常はメインの構成が見つかります。
したがって、テストに@ * Testという注釈を付けました。実行され、サブクラスの構成がチェックされましたが、何も見つかりませんでした。例外がスローされました。
テストクラスのパッケージまたはサブパッケージに構成を含めるか、構成クラスを@ContextConfiguration
または@SpringBootTest
に直接渡すか、クラスに@SpringBootApplication
アノテーションを付ける必要があります。
@SpringBootApplication
によると。 @WebMvcTest
で言及した方法でコントローラーをテストしました。アプリケーションに@SpringBootApplication
と注釈が付けられたクラスがある場合は機能し、そうでない場合は例外で失敗します。あなたが言及した記事に注意があります:
この例では、クラスを省略しています。つまり、テストは最初に任意の内部クラスから@Configurationをロードしようとし、それが失敗した場合は、プライマリ@SpringBootApplicationクラスを検索します。
Github ディスカッション ほぼ同じ点。