请问一下jmock 能mock webservice吗?

jmock 能mock webservice吗


UYOU
浏览 754回答 4
4回答

慕容708150

Jmock和Mockito是常用的mock工具,Jmock功能相当强大,也比较容易用。Mockito 在处理多层嵌套时比较麻烦,下面说明了这种场景的主要用法。不过建议不是用jmock。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182package com.jd.test;  import static org.junit.Assert.assertEquals;import static org.mockito.Matchers.anyLong;import static org.mockito.Mockito.when;  import javax.annotation.Resource;  import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.MockitoAnnotations;import org.mockito.Spy;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  import com.jd.test.service.CustomerBusiness;import com.jd.test.service.FeeBusiness;import com.jd.test.service.OrderBusiness;import com.jd.test.service.ProductBusiness;import com.jd.test.service.impl.FeeBusinessImpl;  @RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "/spring-config.xml")public class MockitoTest {           @Resource    @InjectMocks    private ProductBusiness injectProductBusiness;         @Mock    private OrderBusiness orderBusiness;         @Resource    @InjectMocks    private CustomerBusiness customerBusiness;         @Spy    private FeeBusiness feeBusiness = new FeeBusinessImpl();           @Before    public void setup() {        MockitoAnnotations.initMocks(this);    }         /**     * 自动注入mock管理的bean. 解决二层和多层bean嵌套的部分mock场景。即injectProductBusiness->customerBusiness->feeBusiness 时,如果想mock feeBusiness中的某个方法.      *      *      @Resource        @InjectMocks        private ProductBusiness injectProductBusiness;                 @Resource        @InjectMocks        private CustomerBusiness customerBusiness;                 @Spy        private FeeBusiness feeBusiness = new FeeBusinessImpl();     *      *  @InjectMocks 标签会自动填充带@Spy和@Mock标签的bean.     *  @Spy 被它代理的bean,默认执行原生方法。但可以在后期mock想要的方法。     *  @Mock 相当于mockito帮助简单的实例化bean,因此无法执行原生方法。适用于整个bean都mock,如DAO。     *        *  同时可以结合spring一起管理bean.对bean的管理应该是spring先进行一系列的如初始化bean操作,然后mockito会引用spring生成的bean,并对bean里的指定field进行重新注入。以达到实现部分mock功能 。     */    @Test    public void injectClass() {                 when(feeBusiness.getFee(anyLong())).thenReturn("spy inject");                 assertEquals(injectProductBusiness.getCustomerName(1), "productBusinessimpl->null");        assertEquals(injectProductBusiness.getCustomerPhone(2),"productBusinessimpl->CustomerBusinessImpl->2");        assertEquals(injectProductBusiness.getOrderFee(3),"productBusinessimpl->CustomerBusinessImpl->spy inject");                      }  } 

神不在的星期二

传统的JMock是无法Mock静态方法的,但是Jmockit能够很好地Mock类的静态方法。[java] view plain copypackage features.jmockit.staticmock;public class StaticTarget {public static int m1() {throw new RuntimeException();}public static String m2() {throw new RuntimeException();}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Python