精华内容
下载资源
问答
  • powerMock spring junit test

    千次阅读 2016-12-01 21:44:37
    powerMock spring junit test 在与外部接口联调时,受制于接口的环境,采用mock接口的方式进行逻辑的单元测试,我感觉挺方便的。而且使用简单,一看代码你就明白了。import ...

    在与外部接口联调时,受制于接口的环境,采用mock接口的方式进行逻辑的单元测试,我感觉挺方便的。而且使用简单,一看代码你就明白了。

    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.powermock.core.classloader.annotations.PowerMockIgnore;
    import org.powermock.modules.junit4.PowerMockRunner;
    import org.powermock.modules.junit4.PowerMockRunnerDelegate;
    import org.slf4j.Logger;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import org.vista.mall.fact.product.ProductionStatus;
    
    import javax.annotation.Resource;
    import java.net.MalformedURLException;
    
    import static org.mockito.Mockito.when;
    
    /**
     * Created by le on 2016/11/30.
     */
    @RunWith(PowerMockRunner.class)
    @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
    @PowerMockIgnore({"javax.net.ssl.*","javax.management.*"})
    @ContextConfiguration(locations = {"classpath:spring/applicationContext-*.xml"})
    public class ErpProductSyncServiceTest {
        private static final Logger logger = org.slf4j.LoggerFactory.getLogger(ErpProductSyncServiceTest.class);
    
        @Mock
        private HessianServiceFactory hessianServiceFactory;
    
        @Resource
        @InjectMocks
        private ErpProductSyncService erpProductSyncService;
    
    
        @Before
        public void before() {
            MockitoAnnotations.initMocks(this);
        }
    
        @Test
        public void putOffShelvesTest() {
            String productId = "1003321";
            String channelId = "30104";
            ProductionStatus productionStatus = new ProductionStatus();
            productionStatus.setStatus("0");
            productionStatus.setChangeTime("2016-10-09 00:00:23");
            productionStatus.setProductId(productId);
            try {
                when(hessianServiceFactory.judgeProductionStatus(productId, channelId)).thenReturn(productionStatus);
                erpProductSyncService.setHessianServiceFactory(this.hessianServiceFactory);
                logger.info("{}",erpProductSyncService.judgeProductionStatus(productId, channelId));
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }
    }

    有几点注意的:

    • 如果是 @Mock, 那就是通常的方式,service里面的provider完全被Mock实例替换,所有的调用都是针对Mock生成类的。
    • 运行测试用例的时候,可能会报错,需要忽略掉一些类的mock,例如:@PowerMockIgnore({“javax.net.ssl.“,”javax.management.“})
    • 如果是 @Autowired 加 @Spy , 那么对于定制了返回值的会调用 Mock实例,否则会调用真实注入的属性,但是这里有一个限制,如果是代理类会报错,比如Spring 的AOP代理。
    • 对于AOP的代理类,如果想一部分用Mock,一部分用真实的实例,感觉目前是有些困难,暂时想到的办法就是写两个测试类,一个注入真实属性,一个注入mock属性。
    • 方法调用时,如果不想指定一个明确的参数,就可以用下面这样的写法来表示任意的参数。
    Mockito.when(this.provider.getRevenueRoute(Matchers.anyString(), Matchers.anyString(), Matchers.anyBoolean())).thenReturn(rm);

    powermock 可以mock掉dao、service、静态方法、私有方法等等,对于模拟那些未实现或者环境问题的接口或实现类很方便,写测试用例时看起来优雅一点。

    参考文章:
    http://www.2cto.com/kf/201303/196397.html
    http://www.cnblogs.com/zemliu/p/3369476.html

    展开全文
  • 单元测试,如果用spring注入的话,又用到@RunWith(PowerMockRunner.class),spring注入会出错,应该怎么融合?
  • 文章目录依赖接口静态类单元测试 ...-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 --> <dependency> <groupId>or

    依赖

    <dependencies>
            <!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-junit4</artifactId>
                <version>1.7.4</version>
                <scope>test</scope>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito -->
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-api-mockito</artifactId>
                <version>1.7.4</version>
                <scope>test</scope>
            </dependency>
    
    </dependencies>
    

    接口

    public interface AddressService {
        String getAddress(Long id);
    }
    
    public interface StudentService {
        String getAge(Long id);
    }
    
    @Service
    public class AddressServiceImpl implements AddressService {
        @Override
        public String getAddress(Long id) {
            return "河南省";
        }
    }
    
    @Service
    public class StudentServiceImpl implements StudentService {
    
        @Autowired
        private AddressService addressService;
    
        @Override
        public String getAge(Long id) {
            return id + addressService.getAddress(id) + ConfigUtil.getPath();
        }
    }
    

    静态类

    public class ConfigUtil {
    
        public static String getPath() {
            return "path";
        }
    }
    

    单元测试

    方法一:

    
    @ContextConfiguration(locations = {"classpath:applicationContext-mock.xml"})
    @RunWith(PowerMockRunner.class)
    @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
    @PrepareForTest({ConfigUtil.class})
    public class StudentServiceTest1 {
    
        @Autowired
        private StudentService studentService;
    
        @Test
        public void test() {
            MockitoAnnotations.initMocks(this);
    
            AddressService addressService = PowerMockito.mock(AddressService.class);
            ReflectionTestUtils.setField(studentService, "addressService", addressService);
            PowerMockito.when(addressService.getAddress(1L)).thenReturn("mock");
    
            // 模拟静态方法
            PowerMockito.mockStatic(ConfigUtil.class);
            PowerMockito.when(ConfigUtil.getPath()).thenReturn("staticMock");
    
            String result = studentService.getAge(1L);
            System.out.println(result);
        }
    }
    
    // 输出:1mockstaticMock
    

    方法二

    @ContextConfiguration(locations = {"classpath:applicationContext-mock.xml"})
    @RunWith(PowerMockRunner.class)
    @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
    @PrepareForTest({ConfigUtil.class})
    public class StudentServiceTest2 {
    
        @Autowired
        private StudentService studentService;
    
        @Mock
        private AddressService addressService;
    
        @Test
        public void test() {
            MockitoAnnotations.initMocks(this);
    
            ReflectionTestUtils.setField(studentService, "addressService", addressService);
            Mockito.when(addressService.getAddress(1L)).thenReturn("mock");
    
            // 模拟静态方法
            PowerMockito.mockStatic(ConfigUtil.class);
            PowerMockito.when(ConfigUtil.getPath()).thenReturn("staticMock");
    
            String result = studentService.getAge(1L);
            System.out.println(result);
        }
    }
    
    // 输出:1mockstaticMock
    
    展开全文
  • 使用 PowerMock 可模拟静态、私有方法 使用spring-test-dbunit 可以实现注解方式导入xml 到数据库,为数据库提供测试数据如: @DatabaseSetup  @DatabaseTearDown 使用hsqldb 内置数据库,不会导致数据被...

    使用 Mockito 比easyMock 更简单

    使用 PowerMock 可模拟静态、私有方法

    使用spring-test-dbunit 可以实现注解方式导入xml 到数据库,为数据库提供测试数据如:

    @DatabaseSetup 
    @DatabaseTearDown
    
    
    
    使用hsqldb 内置数据库,不会导致数据被误删或其它误操作后导致单元测试跑不过。
     
    
     
    
    具体实现
     
    
    1、maven 依赖
    	    <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.11</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-test</artifactId>
                    <version>3.2.4.RELEASE</version>
                    <scope>test</scope>
                </dependency>
    			<dependency>
                    <groupId>org.dbunit</groupId>
                    <artifactId>dbunit</artifactId>
                    <version>2.4.9</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>com.github.springtestdbunit</groupId>
                    <artifactId>spring-test-dbunit</artifactId>
                    <version>1.0.1</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.hsqldb</groupId>
                    <artifactId>hsqldb</artifactId>
                    <version>2.3.1</version>
                    <scope>test</scope>
                </dependency>
    			<dependency>
                    <groupId>org.powermock</groupId>
                    <artifactId>powermock-module-junit4-rule-agent</artifactId>
                    <version>1.5.5</version>
                    <scope>test</scope>
                </dependency>
    			<dependency>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-all</artifactId>
                    <version>${mockito.version}</version>
                    <scope>test</scope>
                </dependency>
    
                <dependency>
                    <groupId>org.powermock</groupId>
                    <artifactId>powermock-module-junit4</artifactId>
                    <version>${powermock.version}</version>
                    <scope>test</scope>
                </dependency>
    
                <dependency>
                    <groupId>org.powermock</groupId>
                    <artifactId>powermock-api-mockito</artifactId>
                    <version>${powermock.version}</version>
                    <scope>test</scope>
                </dependency>

     
    
    2、单元测试父类BaseSpringTest
    
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:spring/bcs-spring-context-test.xml")
    @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class })
    @Transactional
    public abstract class BaseSpringTest {
    
    }


    3、编写单元测试
    @PrepareForTest({ HttpClientUtil.class })//使用powermock
    public class IdCardValidateServiceImplTest extends BaseSpringTest {
    
        @Resource
        @InjectMocks  //把被模拟对象注入
        private IdCardValidateService idCardValidateService;
    
        @Resource
        private AppConfig appConfig;
    
        @Mock //被模拟对象
        private SequenceDao sequenceDao;
    
        @Rule  //spring 与 powermock 组合需要使用PowerMockRule
        public PowerMockRule rule = new PowerMockRule();
    
        private static  final String  MOCK_RETURN_SUCC_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><result><returnCode>0000</returnCode><userCode>043101180050000</userCode><validateType>01</validateType><checkPhoto>3xf89Hoqpk0VIH/9k=</checkPhoto><traceNo>1001123</traceNo><responseDatetime>20150120154442</responseDatetime><Sign>C0AED4A3EE24D4913C71E6DBD323D1EB</Sign></result>";
       
        @Before
        public void setUp() {
            MockitoAnnotations.initMocks(this);
            PowerMockito.mockStatic(HttpClientUtil.class);//使用powermock 模拟静态类
        }
    
        //正常流程,先查库,库里没有再调接口。库里面没有该身份证信息
        @Test
        @DatabaseSetup({"classpath:/dbunit/T_BCS_IDCARD_INFO.xml",
                "classpath:/dbunit/T_BCS_PLAT.xml"})
        @DatabaseTearDown(value = {"classpath:/dbunit/T_BCS_IDCARD_INFO.xml",
                "classpath:/dbunit/T_BCS_PLAT.xml"},type = DatabaseOperation.TRUNCATE_TABLE)
        public void testValidate() throws Exception {
            String seq =RandomStringUtils.randomNumeric(7);
            Mockito.when(sequenceDao.getIdcardLogSeq()).thenReturn(Long.valueOf(seq));//Mockito模拟返回
            Mockito.when(sequenceDao.getIdcardInfoSeq()).thenReturn(Long.valueOf(seq));//Mockito模拟返回
            IdCardReq req = new IdCardReq();
            req.setReqSeq("123");
            req.setPlatCode("1001");
            req.setRequestTime(new Date());
            req.setNeedPhoto(false);
            IDCardVO idCardVO = new IDCardVO();
            idCardVO.setIdentityNo("430022198509136854");
            idCardVO.setIdentityType("00");
            idCardVO.setRealName("刘德华");
            req.setIdCard(idCardVO);
            List params = IdCardValidateServiceImpl.getParamList(req, appConfig);
    		//PowerMock模拟返回
            PowerMockito.when(HttpClientUtil.doPost(appConfig.getGztUrl(),params,"UTF-8")).thenReturn(MOCK_RETURN_SUCC_XML);
            BcsResponse<IdCardRes> res =  idCardValidateService.validate(req);
            Assert.assertEquals(ErrorCodeEnum.SUCCEED_CODE.getErrorcode(),res.getErrorCode());
            Assert.assertEquals(ErrorCodeEnum.SUCCEED_CODE.getErrordesc(),res.getErrorMsg());
    
        }
    }


     
    用 hsqldb 时候注意 
    

    数据类型区别
    oracle           hsqldb 
    varchar2         varchar
    number           NUMERIC 
    date             TIMESTAMP


    另外hsqldb获取sequence与oracle方式不一样,所以需要模拟             



    展开全文
  • 五 在测试方法中使用 spring mvc mock 以及 powermock 进行 mock 对象初始化、被测试对象方法的调用验证、mock依赖对象方法的调用验证等,代码片段如下: import net.ioooi.practice.base.domain.Admin; ...

    《单元测试:(一)在已完成的 spring + mybatis 项目中加入 dbunit 完成 dao 层自动化测试》
    《单元测试:(二) 使用 mockito 对 service 层自动化测试入门》
    《单元测试:(三) powermock + spring mvc mock 对 controller 层自动化测试入门》

    powermock 版本 1.7.0RC4,使用 powermock 的原因是因为能对静态方法进行验证。

    一 在 pom.xml 中添加 powermock 需要的库

    <!-- powermock 测试框架 -->
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>${powermock.version}</version>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>${powermock.version}</version>
    </dependency>

    二 在需要使用 powermock 测试的类上方使用对应的注解 @RunWith(PowerMockRunner.class)
    三 在测试类中需要模拟的对象定义上方使用 @Mock 或者 @InjectMocks 注解,其中 @Mock 是对于测试类的依赖类的注解,被 @Mock 的对象所有方法都不真实调用;@InjectMocks 是对待测试类的注解,@InjectMocks 注解过的对象所有方法都会进入方法代码执行。
    四 在测试类的启动方法中使用 spring mvc mock 初始化需要被测试的 controller 类实例,用来模拟 http 请求。测试类的启动方法就是在想要作为启动方法的的类上加 @Before 注解
    五 在测试方法中使用 spring mvc mock 以及 powermock 进行 mock 对象初始化、被测试对象方法的调用验证、mock依赖对象方法的调用验证等,代码片段如下:
     

    import net.ioooi.practice.base.domain.Admin;
    import net.ioooi.practice.base.model.AdminShortListItem;
    import net.ioooi.practice.base.service.AdminService;
    import net.ioooi.practice.base.util.ValidationUtil;
    import org.junit.Before;
    import org.junit.Ignore;
    import org.junit.Test;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    import org.powermock.api.mockito.PowerMockito;
    import org.powermock.core.classloader.annotations.PrepareForTest;
    import org.springframework.http.MediaType;
    import org.springframework.test.web.servlet.MvcResult;
    import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import static junit.framework.TestCase.assertTrue;
    import static org.mockito.Matchers.any;
    import static org.mockito.Matchers.anyInt;
    import static org.mockito.Matchers.anyString;
    import static org.mockito.Mockito.times;
    import static org.mockito.Mockito.verify;
    import static org.mockito.Mockito.when;
    
    /**
     * Created by bel on 2017/4/18.
     */
    @Ignore
    public class AdminControllerTest {
        protected MockMvc mockMvc;
    
        @Mock
        private AdminService adminService;
        @InjectMocks
        private AdminController adminController;
    
        @Before
        public void setUp() {
            //mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); // 使用mockito的时候不能用这个,否则不会调用mockito虚拟的对象
            //MockitoAnnotations.initMocks(this); // 使用mockito的时候用的,使用powermock的时候去掉
            mockMvc = MockMvcBuilders.standaloneSetup(adminController).build(); // 使用mockito的时候用这个,否则不会调用mockito虚拟的对象
        }
    
        @Test
        public void testList() throws Exception {
            mockMvc.perform(MockMvcRequestBuilders.post("/admin/list")) // 模拟发出 http 请求
                    .andExpect(MockMvcResultMatchers.view().name("admin-list")) // 请求后期待得到 admin-list 路径
                    .andExpect(MockMvcResultMatchers.status().isOk()); // 请求后期待返回正常
        }
    
        @Test
        public void testSearch() throws Exception {
            when(adminService.getAdminShortListCountBySearchKey(anyString())).thenReturn(1);
            AdminShortListItem item = new AdminShortListItem();
            item.setStatus(1);
            item.setId(1);
            item.setUserName("testsearch");
            item.setPhone("18900000000");
            List<AdminShortListItem> list = new ArrayList<AdminShortListItem>();
            list.add(item);
            when(adminService.getAdminShortListBySearchKey(anyString(), anyInt(), anyInt())).thenReturn(list);
    
            MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/admin/search")
                    .contentType(MediaType.APPLICATION_JSON) // 设置 http 请求内容类型
                    .characterEncoding("UTF-8") // 设置请求编码
                    .accept(MediaType.APPLICATION_JSON) // 设置请求数据类型为 json
                    .param("draw", "") // 设置请求传递的参数
                    .param("start", "0")
                    .param("length", "10")
                    .param("search", "")
                    .param("recordsTotal", "0"))
                    .andExpect(MockMvcResultMatchers.status().isOk()) // 验证请求后服务端返回正常状态
                    .andReturn();
    
            String expectedJsonResult = "{\"recordsFiltered\":1,\"data\":[{\"id\":1,\"userName\":\"testsearch\",\"phone\":\"18900000000\",\"status\":1}],\"draw\":\"\",\"recordsTotal\":1}";
            assertTrue(expectedJsonResult.equals(result.getResponse().getContentAsString()));
    
            verify(adminService, times(1)).getAdminShortListCountBySearchKey(anyString());
            verify(adminService, times(1)).getAdminShortListBySearchKey(anyString(), anyInt(), anyInt());
        }
    
        @Test
        public void testChangeStatus() throws Exception {
            when(adminService.changeUserStatusByUserIDs(any(Integer[].class), anyInt())).thenReturn(true);
    
            MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/admin/change_status")
                    .contentType(MediaType.APPLICATION_JSON)
                    .characterEncoding("UTF-8")
                    .accept(MediaType.APPLICATION_JSON)
                    .param("ids[]", "-1") // 传入数组的时候不能再加方括号,例如[1,2],需要去掉1,2
                    .param("status", "0"))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andReturn();
            String expectedJsonResult = "{\"status\":true,\"message\":\"修改成功\",\"data\":null}";
            assertTrue(expectedJsonResult.equals(result.getResponse().getContentAsString()));
        }
    
        @Test
        @PrepareForTest({ ValidationUtil.class })
        public void testAdd() throws Exception {
            when(adminService.regist(any(Admin.class))).thenReturn(true);
            PowerMockito.mockStatic(ValidationUtil.class);
            PowerMockito.when(ValidationUtil.beanValidate(any(Admin.class))).thenReturn(""); // mock调用静态方法
    
            MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/admin/add")
                    .contentType(MediaType.APPLICATION_JSON)
                    .characterEncoding("UTF-8")
                    .accept(MediaType.APPLICATION_JSON)
                    .param("userName", "testadd")
                    .param("password", "testadd")
                    .param("email", "testadd@test.com")
                    .param("phone", "18900000000"))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andReturn();
            String expectedJsonResult = "{\"status\":true,\"message\":\"添加成功\",\"data\":null}";
            assertTrue(expectedJsonResult.equals(result.getResponse().getContentAsString()));
            PowerMockito.verifyStatic(); // 本句和下一句联合起来对静态方法进行调用
            ValidationUtil.beanValidate((any(Admin.class)));
        }
    
       @Test
       @PrepareForTest({ ValidationUtil.class })
        public void testModify() throws Exception {
            Admin admin = new Admin();
            when(adminService.getAdminById(anyInt())).thenReturn(admin);
            when(adminService.modify(admin)).thenReturn(true);
    
            PowerMockito.mockStatic(ValidationUtil.class);
            PowerMockito.when(ValidationUtil.beanValidate(any(Admin.class))).thenReturn(""); // mock调用静态方法
    
            MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/admin/modify")
                    .contentType(MediaType.APPLICATION_JSON)
                    .characterEncoding("UTF-8")
                    .accept(MediaType.APPLICATION_JSON)
                    .param("id", "1")
                    .param("email", "testadd@test.com")
                    .param("phone", "18900000000"))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andReturn();
            String expectedJsonResult = "{\"status\":true,\"message\":\"修改成功\",\"data\":null}";
            assertTrue(expectedJsonResult.equals(result.getResponse().getContentAsString()));
    
           verify(adminService).getAdminById(anyInt());
           verify(adminService).modify(admin);
    
           PowerMockito.verifyStatic(); // 本句和下一句联合起来对静态方法进行调用
           ValidationUtil.beanValidate((any(Admin.class)));
        }
    }

     

    转载于:https://my.oschina.net/ioooi/blog/1526359

    展开全文
  • 最近两天认真学习了一下spring mvc和powermock结合对http请求进行单元测试,这里记录一下写成的demo import com.alibaba.fastjson.JSONObject; import org.apache.commons.collections.MapUtils; import org.apache....
  • PowerMock 简介 网上有很多关于PowerMock 的介绍,大家可以自行检索: https://www.ibm.com/developerworks/cn/java/j-lo-powermock/index.html 首先说明这是一个web开发项目的单元测试中关于PowerMock的使用经验;...
  • 由于要代码中使用了 Date 类生成实时时间,单元...在 Spring Boot 的测试套件中,需要添加 @RunWith(SpringRunner.class) 和 @SpringBootTest 注解。 但是 PowerMock 需要添加 @RunWith(PowerMockRunner.class) ...
  • Spring中执行单元测试,最麻烦的就是解决Bean的定义以及注入的问题。最开始使用Spring的上下文初始化进行测试,开头是这样的: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/config/Spring-...
  • 之前使用powermock测试spring程序的时候,每个测试类都需要重启spring的TestContext.这样测试单个类没什么问题,但是批量测试确有个很大的问题:就是速度慢,慢就会造成整体运行测试的意愿和可能性降低,也算是个...
  • PowerMock

    2020-03-02 19:19:57
    添加Maven依赖 待测模拟测试类方法 ...powerMock方法 返回值为 void 方法模拟 @Test public void testSaveUserWithPowerMock(){ UserDao uDao = PowerMockito.mock(UserDao.class); User user = new Us...
  • 最近在研究单元测试,先是搭建了Spring-test + mockito + junit的环境,但是由于发现项目中需要有mock静态方法的地方,于是研究了下Spring-test + powermock+ junit后者我研究了三天踩过无数坑,最终还是放弃了。...
  • sometimes we need to test final class or static class, at this time we need powermock. 1, update pom.xml to import powermock &lt;dependency&gt; &lt;groupId&gt;org.powermock&...
  • 使用mockmvc做单元测试 创建BaseTest 类 package com.cn21.baichuan.cc.controller.admin; import ...import org.junit.runner.RunWith;...import org.springframework.boo...
  • package com.sdo.transbutton.payment.callback; import java.math.BigDecimal; import org.easymock.EasyMock; import org.junit.Assert;...import org.powermock.api.easymock.PowerMock; import org.pow
  • 上一篇说到powermock的配置,我一般在测试类中再加上继承spring的测试类:extends AbstractTransactionalJUnit4SpringContextTests ,这样就基本可以了。 再来说说上一篇中使用的spring配置文件。主要的不同就是test...
  • 本周,我注意到在整个测试中使用了多少PowerMock来模拟静态或私有方法。 在一个特定的程序包中,删除它可以将测试执行时间缩短一个数量级(从大约20秒减少到2秒)。 这显然是滥用:我看到了使用PowerMock的三个主要...
  • PowerMock单元测试

    2015-10-10 17:08:48
    PowerMock主要就是模拟对象,并得到你想要的结果 pom.xml增加相关依赖 [code="xml"] junit junit test org.powermock powermock-module-junit4 1.4.10 test org....
  • 最近,项目中频繁用到dubbo,...我们的项目都是基于spring的。spring集成dubbo,就可以对这些外部服务进行注入和使用了。  但是对于单元测试来说却出现了难题:领域模型的测试不是问题,都是自己的代码;但是如果我
  • 转:... 最近,项目中频繁用到dubbo,而且java工程用引用了几十个关联系统的服务(如用户认证,基础服务,客户平台)。...我们的项目都是基于spring的。spring集成dubbo,就可...
  • PowerMock使用详解

    千次阅读 2020-02-07 21:57:20
    1. PowerMock是什么? 2. PowerMock包引入 3. 重要注解说明 4. 示例 1. PowerMock是什么? PowerMock是一个Java模拟框架,用于解决测试问题。 举个例子,你在使用Junit进行单元测试时,并不想让测试数据进入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,267
精华内容 506
关键字:

powermockspring

spring 订阅