通过Junit和Spring-Test测试SpringMVC的web应用

通过Junit和Spring-Test测试SpringMVC的web应用

1、通过Spring-Test测试web应用

可以避免多次启动web 容器带来的烦恼,每次执行特定的测试方法。

再也不用通过web容器(如tomcat,jetty等)启动整个web应用,尤其是当项目复杂,比较庞大时,能够节省很多时间。


2、maven依赖

maven依赖除了需要用到的junit和spring以及其他的项目使用的依赖之外,需要额外增加

spring-test的jar包。

 <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- Used for Hibernate4 LocalSessionFactoryBean -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>


3、具体测试类

这里只贴上了对应测试类,controller类只实现简单的syso。

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration(value = "src/main/webapp") 
@ContextConfiguration({"classpath*:/applicationContext.xml" })  
//@ContextConfiguration("file:src/main/resources/applicationContext.xml")
public class TestRunController {
	@Autowired    
    private WebApplicationContext wac;
    private MockMvc mockMvc;
    @Autowired   
    TestController testController ;
    @Autowired
    ServletContext context;
    
    @Before
    public void setUp() {
       // mockMvc = MockMvcBuilders.webAppContextSetup( wac ).build();
        mockMvc = MockMvcBuilders.standaloneSetup( testController).build() ;
    }
 
    @Test
    public void test() throws Exception {
        assertNotNull(mockMvc);
        mockMvc.perform( MockMvcRequestBuilders.get("/test/testA.action?a=1") )
                        .andReturn()  ;  
 
    }
    
    @Test
    public void testB() throws Exception {
        assertNotNull(mockMvc);
        mockMvc.perform( MockMvcRequestBuilders.post("/test/testB.action" ).content("aaa") )
                        .andReturn()  ;  
 
    }
}




参考资料:

http://my.oschina.net/u/2007041/blog/418748?fromerr=AKpkgCGL

http://jinnianshilongnian.iteye.com/blog/2004660

https://www.ibm.com/developerworks/cn/java/j-lo-springunitest/

springmvc-test的api:  http://www.csdn123.com/html/mycsdn20140110/a7/a75383fcc7d869a7627583ada5e76e46.html

你可能感兴趣的:(spring,spring,mvc,JUnit,测试,Web应用)