zoukankan      html  css  js  c++  java
  • 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");
        }
    	
    		//异常测试
    		@Test
        public void testCreateOrderException {
        	Mockito.when(myOrderService.checkOnlyPrice(Mockito.any(OrderDO.class))).thenThrow(new DataAccessException(""));//业务层catch的异常
        	
        	try {
                accountDataService.getBFinAtAccountDataList("");
            } catch (Exception e) {
                Assert.assertTrue(e instanceof BusinessException);//业务层throw的异常
            }
        }
    }    
    

      

  • 相关阅读:
    Grep案例(本地模式)
    Java环境变量 和 Hadoop环境变量 配置
    sudo设置
    Linux配置
    mysql安装(前提:Linux最小化安装)
    test
    Floyd算法【最短路1】
    HttpClient调用接口发送文件
    Spring boot 论坛项目实战_07
    Spring boot 论坛项目实战_06
  • 原文地址:https://www.cnblogs.com/yiyibinbin/p/9355923.html
Copyright © 2011-2022 走看看