JUnit下测试SpringMVC的Controller

JUnit下测试SpringMVC的Controller

废话少说,直接贴代码

EnumController

@Controller  
@RequestMapping("/enum") 
public class EnumController
{
    @Autowired
    private EnumService enumService;

    @ResponseBody
    @RequestMapping("/addtype")
    public JSONResult addtype(HttpServletRequest request,HttpServletResponse response,
            EnumType enumType){
        Assert.notNull(enumType.getEnumNo(), "字典类别编号不能为空");
        Assert.notNull(enumType.getEnumName(), "字典类型名称不能为空");
        EnumType newType = enumService.addOrUpdateEnumType(enumType);
        JSONResult result = new JSONResult(true, "", newType);
        return result;
    }

    @ResponseBody
    @RequestMapping("/updatetype")
    public JSONResult updatetype(HttpServletRequest request,HttpServletResponse response,
            EnumType enumType){
        Assert.notNull(enumType.getId(), "字典类别ID不能为空");
        Assert.notNull(enumType.getEnumNo(), "字典类别编号不能为空");
        Assert.notNull(enumType.getEnumName(), "字典类型名称不能为空");
        EnumType newType = enumService.addOrUpdateEnumType(enumType);
        JSONResult result = new JSONResult(true, "", newType);
        return result;
    }
}

EnumControllerTest :

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})  
@Transactional
public class EnumControllerTest {
    private static final Logger logger = LoggerFactory.getLogger(EnumControllerTest.class);

    @Autowired
    private WebApplicationContext wac;

    @Autowired
    private EnumController enumController;

    private MockMvc mockMvc;

    @Before
    public void setup() {
        this.mockMvc = MockMvcBuilders.standaloneSetup(enumController).build(); 
    }

    @Test
    @Rollback(true) 
    public void test_updatetype() throws Exception {
    }

    @Test
    @Rollback(false) // 事务不回滚,数据更新至数据库中
    public void test_addtype() throws Exception {
        ResultActions ra = this.mockMvc.perform(MockMvcRequestBuilders  
                .post("/enum/addtype")  
                .accept(MediaType.APPLICATION_JSON)
                .param("enumName", "测试1")  
                .param("enumNo", "test1"));  
        MvcResult mr = ra.andReturn();  
        String result = mr.getResponse().getContentAsString();  
        logger.info(result);
    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Junit 5 是一个流行的 Java 单元测试框架,它提供了一套功能强大且易于使用的工具,用于编写和执行单元测试Spring MVCSpring 框架的一个模块,用于开发基于 MVC(Model-View-Controller)架构的 Web 应用程序。 在使用 Junit 5 进行 Spring MVC 的单元测试时,你可以通过以下步骤来进行配置和编写测试代码: 1. 添加 Junit 5 和 Spring MVC 的相关依赖到你的项目。这包括 junit-jupiter、spring-test 等库。 2. 创建一个测试类,并使用 `@ExtendWith(SpringExtension.class)` 注解来启用 Spring 支持。 3. 使用 `@WebMvcTest` 注解标记测试类,以指定要测试的控制器或控制器类。 4. 使用 `@Autowired` 注解将需要进行测试Spring Bean 注入到测试。 5. 使用 Junit 5 提供的断言方法,如 `assertEquals`、`assertNotNull` 等,编写测试方法来验证你的控制器的行为和输出结果。 以下是一个简单的例子: ```java import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; @ExtendWith(SpringExtension.class) @WebMvcTest(YourController.class) public class YourControllerTest { @Autowired private MockMvc mockMvc; @Test public void testYourController() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/your-endpoint")) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Expected Result")); } } ``` 在这个例子,我们使用 `@WebMvcTest` 注解指定了要测试的控制器类 `YourController`,并使用 `MockMvc` 对象来模拟发送 HTTP 请求和验证响应。 当你运行这个测试类时,它将启动一个 Spring 上下文,并使用指定的控制器类进行测试。你可以编写更多的测试方法来覆盖不同的场景和逻辑。 希望这个例子能够帮助你开始使用 Junit 5 进行 Spring MVC 的单元测试。如果有任何进一步的问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值