오류:을 찾을 수 없습@SpringBootConfiguration 을 할 때@WebMvcTest 봄 컨트롤러

나는 내 아래의 컨트롤러

@Controller
public class MasterController {

@GetMapping("/")
public String goLoginPage(){
    return "index";
}
}

나는 다음과 같은 이]1봄 문서 테스트 컨트롤러입니다.

지금,나는 원하 테스트 컨트롤러에 의해 인스턴스화는 웹층과하지 않는 전체 봄 컨텍스트로에서 주어진 문서입니다. 아래에 나의 코드를 동일합니다.

@RunWith(SpringRunner.class)
@WebMvcTest
public class MasterControllerTestWithWebLayer {

@Autowired
MockMvc mockMvc;

@Autowired
MasterController masterController;

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Test
public void testLoginHome() throws Exception{
    mockMvc.perform(get("/"))
    .andExpect(status().isOk())
    .andExpect(view().name("index"));
}

}

을 실행할 때 이 테스트는 나는 오류를 찾을 수 없습@SpringBootConfiguration,...etc.`. 그러나 내가 혼동 왜 그것을 요청 봄 구성할 때 우리는 그것을 원하지 않는 인스턴스화하지만 사용하려 웹층이다. 친절하게 저 오른쪽 방향으로 여기에 무슨 일이 일어나고 있는지. 또한 해결하는 방법이다. 감사

질문에 대한 의견 (5)
해결책

그래서 여기에는 이 솔루션:

문서에서 감지 테스트 구성말한다:

색 알고리즘 작품에서부터 패키지 포함하는 테스트를 찾을 때까지@SpringBootApplication 또는@SpringBootConfiguration 석 클래스입니다. 만큼 당신은 코드를 구성에 합리적인 방법의 주요 구성은 일반적으로 발견된다.

그래서@SpringBootApplication야에서 높이 패키지의 계층 구조상 시험 클래스 e.g 경우 테스트 클래스가에서 패키지com.zerosolutions.컨트롤러다음@SpringBootApplication클래스에 있어야 패키지보다 더 높com.zerosolutions.컨트롤러패키지.e com.zerosolutions또는com`.

하지만 경우에는@SpringBootApplication클래스에서는 동일한 수준으로 테스트 클래스지't 을 찾을 수 있다.e com.zerosolutions.일반적으로`. 이 경우에는'll 다음과 같은 오류가:

java.랭.IllegalStateException:을 찾을 수 없습@SpringBootConfiguration 를 사용해야 합@ContextConfiguration 또는@SpringBootTest(수업=...)테스트

솔루션

실행하는 경우에는 통합형 테스트할 수 있습 명시적으로 언급하는@SpringBootApplication등 다음과 같이

@RunWith(SpringRunner.class)
@SpringBootTest(classes={SpringBootApp.class})

하지만 당신이 원하는 경우에 단위의 테스트 컨트롤러지't 할 필요가 전체 봄다. 할 수 있는 오히려 대체한@SpringBootTest@WebMvcTest(MasterController.class). 이스의 인스턴스를 만 웹사층을 가진MasterController그리고 전체 봄다.

하지만 문제는 당신이 다시 실행 오류가 우리가 이전에 직면:

java.랭.IllegalStateException:을 찾을 수 없습@SpringBootConfiguration 를 사용해야 합@ContextConfiguration 또는@SpringBootTest(수업=...)테스트

그리고@WebMvtTest있지 않은클래스의 특성은 다음과 같@SpringBootTest명시적으로 언급하는@SpringBootApplication`클래스입니다. 그래서 거기에는 두 가지 솔루션.

솔루션

:이 클래스는 응용 프로그램 패키지보다 더 높은 테스트 클래스 i.e com.zerosolutions또는com`패키지입니다.

:언급@SpringBootApplication클래스는 아래와 같이 명시적으로

@RunWith(SpringRunner.class)
@WebMvcTest(MasterController.class)
@ContextConfiguration(classes={SpringBootApp.class})

희망을 지우는 봄 테스트 구성 혼란이 있습니다. 감사

해설 (4)

하는 경우 Application.java 클래스(src/main/자바)에 위치한 아

`com.니다.B

테스트 클래스 ApplicationTest.java (in src/시험/java)해야에서

com.니다.B또는com.니다.B.C또는`com.니다.B.C.D

당신이 오류를 테스트하는 경우 등은 아래에 있는 다음과 같은 패키지

com.A또는com.니다.C또는`com.니다.D

봄에 부팅 일반 규칙테스트 클래스 패키지 이름으로 시작해야 패키지 이름 JAVA 클래스의 포장을 테스트 할

해설 (2)

나는 같은 오류를 발견했을 때 생성 프로젝트 나 pom.xml 제 groupId 로 com.예 아닌 내 도메인의 실제: <groupId>com.예</groupId> 나는 수정 pom.xml 다: <groupId>com.mydomain</groupId> 다음으로,저는 변경된 파일 구조에서: src/시험/java/com/예를 들어``src/시험/java/com/mydomain 마지막으로,나를 업데이트 했 패키지 내 선언 SampleProjectApplicationTest.java 파일을 올바른 파일 구조입니다. 한때는 모든 장소에서 테스트를 사용한다.

나는 확실하지 않는 방법을 함께했 com.예를 들어 내는 프로젝트가 정확하지만,고정되었는 간단을 수도 있습니다.

희망이 누군가가 도움이 됩니다.

해설 (0)