package cantabille.config;
import cantabille.modules.ModulesPackageMarker;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.stereotype.Controller;import org.springframework.web.servlet.HandlerMapping;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;import org.springframework.web.servlet.view.InternalResourceViewResolver;import org.springframework.web.servlet.view.JstlView;
/** * @author Keesun Baik */@Configuration@ComponentScan( basePackageClasses = ModulesPackageMarker.class, useDefaultFilters = false, includeFilters = @ComponentScan.Filter(Controller.class))public class WebConfig extends WebMvcConfigurationSupport {
@Override protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); }
@Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/static"); }
@Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setViewClass(JstlView.class); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; }
}
이렇게 코딩을 해두고.. 이 설정 파일에서 빈으로 등록되는 것들이 제대로 등록되나 궁금하니까 테스트를 작성해볼 수 있겠죠.
package cantabille.config;
import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
/** * @author Keesun Baik */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = WebConfig.class)public class WebConfigTest {
@Autowired RequestMappingHandlerMapping rmhm;
@Test public void di(){
}
}
이런식으로 말이죠. di() 메서드 아무것도 안해도 사실상 제가 원하는 테스트는 저정도면 충분하거든요. 그리고 이정도 테스트는 XML 기반으로 설정할 때도 잘 통과했었는데…. 흠.. 잘 안됩니다. ApplicationContext를 제대로 만들지 못합니다. 특정 빈을 만들지 못하기 때문이죠. DefaultServlet을 사용하려면 ServletContext가 필요하다는 에러가 나면서 Assert.notNull()에서 걸리고 말죠… 어찌하면 좋을까나…
스프링 TestContext를 포기할 수밖에 없는건가…
그리고 그게 꼭 필요한거면 XML 기반으로 동일한 설정을 할때도 안됐어여 하는거 아닌가..
흠.. 고민이로세.
아.. 그냥 테스트하지 말까.. 너무 당연한거니깐?? ㅋㅋㅋ