Spring MVC控制器JUnit测试

JUnit测试Spring MVC控制器并非易事 。 但是最近,一个新项目 (即将在Spring推出)提供了新工具来简化此工作。 这篇文章说明了如何通过JUnit测试来测试一个简单的控制器。

该代码是JUnit Testing Spring Service和DAO(带有内存数据库)中使用的代码的变体。 可从Spring-MVC-JUnit-Testing目录中的Gihut获得。

测试配置类

这些与Service和DAO测试所需的相同。

控制者

我们的控制器:

@Controller
public class MyController {

    @Autowired
    private MyService myService;

    @RequestMapping(value = '/')
    public String home(Model model) {

        return 'index';

    }

    @RequestMapping(value = '/roundtrip')
    public String persistenceStatus(Model model) {

        MilliTimeItem retr = myService.createAndRetrieve();
        model.addAttribute('RoundTrip', retr);

        return 'roundtrip';

    }

}


控制器测试

下面创建一个MockMvc实例来测试模拟的用户请求:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ JpaTestConfig.class, TestConfig.class })
public class MyControllerTest {

    private MockMvc mockMvc;

    @Before
    public void setup() {

        mockMvc = MockMvcBuilders
            .annotationConfigSetup(JpaTestConfig.class, TestConfig.class)
            .build();

    }

    @Test
    public void testHome() throws Exception {

        mockMvc.perform(get('/'))
            .andExpect(status().isOk())
            .andExpect(forwardedUrl('WEB-INF/pages/index.jsp'));

    }

    @Test
    public void testPersistenceStatus() throws Exception {

        mockMvc.perform(get('/roundtrip'))
            .andExpect(status().isOk())
            .andExpect(forwardedUrl('WEB-INF/pages/roundtrip.jsp'))
            .andExpect(model().attributeExists('RoundTrip'));

    }

}

/请求测试返回的状态以及到JSP页面的URL映射。 / roundtrip请求确保返回的模型确实包含Roundtrip属性。

依存关系

Spring MVC测试工件尚无法从maven的中央存储库中获得。 它应该从另一个存储库获得:

<repositories>
    <repository>
        <id>spring.test-mvc</id>
            <url>http://repo.springsource.org/libs-milestone</url>
        </repository>
    </repositories>

所需的依赖项是:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test-mvc</artifactId>
    <version>1.0.0.M1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-library</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

更多春天相关的帖子在这里

参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge提供的Spring MVC Controller JUnit Testing


翻译自: https://www.javacodegeeks.com/2012/10/spring-mvc-controller-junit-testing.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值