powermock测试

1、导入依赖包

<!-- 单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>2.8.47</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>1.7.1</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>mockito-core</artifactId>
                    <groupId>org.mockito</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>1.7.1</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>objenesis</artifactId>
                    <groupId>org.objenesis</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>mockito-core</artifactId>
                    <groupId>org.mockito</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 单元测试-->

2、编写测试类

  

@PowerMockIgnore({ "javax.management.*" })
public class OrderServiceImplTest {

   /**
     * 注入测试对象类
     */
    @InjectMocks
    private OrderService orderService; 
 
    /**
     * 注入需要mock的类(orderService类中存在调用myOrderService的方法)
     */
    @Mock
    private MyOrderService myOrderService;

     /**
     * 初始化
     */
    @Before
    public void before() {
    orderService = new OrderServiceImpl();
    myOrderService = PowerMockito.mock(MyOrderService.class);
    //第二个参数必须和OrderServiceImpl类中对MyOrderService类中的引用myOrderService一致
   ReflectionTestUtils.setField(orderService,"myOrderService",myOrderService);      
    }

    @Test
    public void testCreateOrder {
    //对所测试类中调用其他包中的方法进行mock,方法参数可随意化,但返回的对象必须要保证不发生空指针,即需要赋值的地方及时赋值。
    ResultBean result = new ResultBean();
    result.setCode("200");
   Mockito.when(myOrderService.checkOnlyPrice(Mockito.any(OrderDO.class))).thenReturn(result);

    //此参数需实例化
    MessageBO messageBO =orderService.createOrder("test");
    //断言
    Assert.assertEquals(messageBO.getCode(), "200");
    }
}

  

 

猜你喜欢

转载自www.cnblogs.com/yiyibinbin/p/9355923.html