회사에 테스트 프레임웍을 포함해 테스트코드는 하나도 없어서 내가 구축해서 해보려고 하는데

 

난관이 많았다 ... 위 에러는 비교적 간단하지만 그래도 글을 남겨본다

 

 

 

우리가 대표적으로 사용하는 tomcat은 서블릿컨테이너를 포함하고있는데

 

웹 어플리케이션을 이클립스에서만 빌드해본게아니라 maven 명령어로 빌드해보신분들은 잘 아실꺼다

 

빌드하는 순간 javax.servlet ... 어쩌구 에러가 나는데 이게 단순히 mvn package 명령어로 빌드하는 시점에는

 

서블릿 컨테이너가 없기 때문에 컴파일시점에서는 오류가 난다.

 

 

그래서

 

 

		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>3.0.1</version>
		    <scope>provided</scope>
		</dependency>

 

위와같이 scope 설정을 provide로 둔다. provided 설정은 javax.servlet 에 대한 의존관계를 컨테이너에게 떠넘긴다? 라고 생각하면 편하다. 따라서 빌드하는 시점에는 오류가 나지 않는다.

 

 

 

뭐 이거는 그렇다 치고 .. 똑같이 웹어플리케이션을 테스트할때도 마찬가지다.

 

junit이 돌아갈때는 javax.servlet 패키지에 대한 의존관계를 아무도 해결해주지 않기때문에 스프링 컨테이너가 올라가는 시점에 에러가 난다.

 

 

No qualifying bean of type [javax.servlet.ServletContext] found for dependency ... 어쩌구

 

이때 사용 할 수 있는것이 바로

 

@WebAppConfiguration 어노테이션이다.

 

spring doc을 확인해보면

 


The presence of @WebAppConfiguration on a test class indicates that a WebApplicationContext should be loaded for the test using a default for the path to the root of the web application. 

 

테스트 클래스에 @WebAppConfiguration이 있으면 웹 응용 프로그램의 루트에 대한 경로에 대한 기본값을 사용하여 테스트를 위해 WebApplicationContext를로드해야 함을 나타냅니다. 


 

라는 말이 있다. 여기서 경로에 대한 기본값은 따로 지정하지 않으면 "src/main/webapp" 로 올라간다.

 

 

 

 

 

 

+ Recent posts