java - 如何在 JUnit 测试中初始化对象?

标签 java junit

我正在尝试进行 JUnit 测试来测试 Controller 。

我的 Controller 包括:

    @Autowired
    private OrderManager orderManager;

    @RequestMapping(value = "/getOrderList", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> getOrderTables(OrderSearchDto orderSearchDto) {
         ...
         orderHdrTables = orderManager.findAllOrders(orderSearchDto);
         ...
    }

我的测试是:

@RunWith(MockitoJUnitRunner.class)
public class FilterActivityTest {

    @InjectMocks
    private OrderHdrController orderHdrController;

    private MockMvc mockMvc;

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

    @Test
    public void testActivityFilter() throws Exception {

        OrderSearchDto orderSearchDto = new OrderSearchDto();
        OrderSearchPanelDto orderSearchPanelDto = new OrderSearchPanelDto();
        List <String> activityTypes = Arrays.asList("DELIVERY","START_UPLOAD");
        orderSearchPanelDto.setActivityTypes(activityTypes);
        orderSearchDto.setOrderSearchPanelDto(orderSearchPanelDto);

        mockMvc.perform(MockMvcRequestBuilders.post("/orders/getOrderList")     
        .content(asJsonString(orderSearchDto))
        .contentType(MediaType.APPLICATION_JSON)
        .accept(MediaType.APPLICATION_JSON)).andDo(print())
        .andExpect(status().isOk())
        .andExpect(jsonPath("$.data.data[0].tripNo", is("SG1606LLR08469")))
        .andExpect(jsonPath("$.data.data[1].tripNo", is("SG1606LLR08470")));;
    }

    private static String asJsonString(final Object obj) {
        try {
            final ObjectMapper mapper = new ObjectMapper();
            final String jsonContent = mapper.writeValueAsString(obj);
            return jsonContent;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }  
}

但是在测试调试期间,我在 Controller 中发现 orderManager 为 null。我可以做什么来初始化它?

最佳答案

我对你的测试做了一些修改。请尝试这个。

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {
        FilterActivityTest.Config.class,
        OrderHdrController.class,
})
public class FilterActivityTest {

@Configuration
    static class Config {
        @Bean
        OrderManager orderManager() {
            return mock(OrderManager.class);
        }
    }

@Autowired
private OrderHdrController orderHdrController;

@Before
    public void setup() {
        this.mockMvc = MockMvcBuilders.standaloneSetup(orderHdrController).build();
        //remember to mock orderManager.findAllOrders here
    }


}

关于java - 如何在 JUnit 测试中初始化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59205548/

相关文章:

java - JPanel 中的 Raisd 边框

java - 当派生类主要用于扩展状态而不是行为时,如何动态获取继承层次结构中的子类?

java - 使用 Mockito 和 PowerMockito 模拟类对象

android - 为什么大型 Android Activity 单元测试会失败?

java - 如何在HBase中实现分页?

java - jboss 中不提供休息服务

java - Spring 5,从 LDAP (AD) 获取信息

java - JUnit Java 即时依赖测试

java - JUnit UnsatisfiedLinkError : android. util.Log.isLoggable(Ljava/lang/String;

java - JUnit - 针对不同实现的一项测试