You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中编写OrderController的集成测试?求可参考的实现示例

OrderController集成测试编写示例

你现有测试类缺少Web上下文注入和MockMvc初始化逻辑,完整的测试实现如下:

import org.junit.Before;
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.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
// 此处替换为你项目实际的Spring配置类/配置文件路径,Spring Boot项目可直接替换为@SpringBootTest注解
@ContextConfiguration(classes = {SpringConfig.class, OrderController.class, OrderServiceImpl.class})
public class OrderControllerTest {

    @Autowired
    private WebApplicationContext webApplicationContext;

    // 若不需要依赖真实数据库,可打开下方注释用Mock对象模拟Service层返回
    // @MockBean
    // private OrderService orderService;

    private MockMvc mockMvc;

    @Before
    public void setup() {
        // 初始化MockMvc
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
        // 若使用Mock的Service,可改为下方初始化方式
        // mockMvc = MockMvcBuilders.standaloneSetup(new OrderController(orderService)).build();
    }

    // 测试新增订单接口
    @Test
    public void shouldAddNewOrder() throws Exception {
        // 按你项目AddUpdateOrderEnter实体的实际字段调整参数名、参数值
        mockMvc.perform(post("/add")
                        .param("orderNo", "TEST20240501001")
                        .param("totalAmount", "199.99")
                        .param("creatorId", "10001"))
                // 验证HTTP状态码为200
                .andExpect(status().isOk())
                // 按你项目Response类的实际成功状态码调整value值
                .andExpect(jsonPath("$.code").value(200))
                // 验证返回结果符合预期
                .andExpect(jsonPath("$.data.orderNo").value("TEST20240501001"));
    }

    // 测试新增订单配件接口
    @Test
    public void shouldAddOrderParts() throws Exception {
        mockMvc.perform(post("/addOrderParts")
                        .param("orderId", "10001")
                        .param("partCode", "P0023")
                        .param("count", "3"))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.code").value(200))
                .andExpect(jsonPath("$.data.success").value(true));
    }

    // 测试订单列表查询接口
    @Test
    public void shouldGetOrderList() throws Exception {
        mockMvc.perform(get("/list")
                        .param("pageNum", "1")
                        .param("pageSize", "10")
                        .param("creatorId", "10001"))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.code").value(200))
                .andExpect(jsonPath("$.data").isArray())
                .andExpect(jsonPath("$.data.length()").gte(0));
    }

    // 测试订单详情查询接口
    @Test
    public void shouldGetOrderDetails() throws Exception {
        mockMvc.perform(get("/details")
                        .param("id", "10001"))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.code").value(200))
                .andExpect(jsonPath("$.data.id").value("10001"));
    }

    // 测试订单删除接口
    @Test
    public void shouldDeleteOrder() throws Exception {
        mockMvc.perform(post("/delete")
                        .param("id", "10001"))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.code").value(200))
                .andExpect(jsonPath("$.data.success").value(true));
    }
}
  • 所有参数名、返回字段、成功状态码都需要按照你项目的实际定义调整
  • 若使用Mock的Service层,可配合Mockito的when(orderService.addOrder(any())).thenReturn(自定义返回结果)模拟业务层返回,无需依赖测试数据库

内容的提问来源于stack exchange,提问作者ced_d0llars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:57:01