如果在测一个类的某一个方法时,这个方法还调用了此类的其他方法,那么如何指定其他方法的返回值呢?

public class Calc {

  1. static {
  2. System.out.println("hahaha");
  3. }
  4. public int add(int a, int b) {
  5. return interADD(a, b);
  6. }
  7. private int interADD(int a, int b) {
  8. return a + b;
  9. }
  10. public int minus(int a, int b) {
  11. return interMinus(a, b);
  12. }
  13. public int interMinus(int a, int b) {
  14. return a-b;
  15. }
  16. }
  17. package com.kevin.util;
  18. import static org.junit.Assert.*;
  19. import junit.framework.Assert;
  20. import org.easymock.EasyMock;
  21. import org.junit.Test;
  22. import org.junit.runner.RunWith;
  23. import org.powermock.api.easymock.PowerMock;
  24. import org.powermock.core.classloader.annotations.PrepareForTest;
  25. import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
  26. import org.powermock.modules.junit4.PowerMockRunner;
  27. @RunWith(PowerMockRunner.class)
  28. @PrepareForTest({Calc.class})
  29. //suppress static initial
  30. @SuppressStaticInitializationFor({"Calc.class"})
  31. public class CalcTest {
  32. //mock private method in class that be testing
  33. @Test
  34. public void testAdd() {
  35. Calc createPartialMock = PowerMock.createPartialMock(Calc.class, "interADD");
  36. try {
  37. PowerMock.expectPrivate(createPartialMock, "interADD",2,3).andReturn(1000);
  38. PowerMock.replay(createPartialMock);
  39. int result = createPartialMock.add(2, 3);
  40. Assert.assertEquals(1000, result);
  41. } catch (Exception e) {
  42. // TODO Auto-generated catch block
  43. fail();
  44. }
  45. }
  46. //mock public method int class that be testing
  47. @Test
  48. public void testMinus() {
  49. Calc createPartialMock = PowerMock.createPartialMock(Calc.class, "interMinus");
  50. try {
  51. EasyMock.expect(createPartialMock.interMinus(5, 4)).andReturn(1000);
  52. EasyMock.replay(createPartialMock);
  53. int result = createPartialMock.minus(5, 4);
  54. Assert.assertEquals(1000, result);
  55. } catch (Exception e) {
  56. // TODO Auto-generated catch block
  57. fail();
  58. }
  59. }
  60. }

PowerMock使用遇到的问题——2的更多相关文章

  1. Mock之easymock, powermock, and mockito

    easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...

  2. 用PowerMock mock 由工厂方法产生的对象

    有些对象需要mock的对象是由工厂方法产生出来的,而工厂方法一般是静态方法,这时候就需要同时mock工厂方法及对象 被测方法: public class EmployeeServiceFactory ...

  3. 用PowerMock spy mock private方法

    在实际的工作中,经常碰到只需要mock一个类的一部分方法,这时候可以用spy来实现. 被测类: public class EmployeeService { public boolean exist( ...

  4. 用PowerMock mock static方法

    在编写代码时,经常需要调用别人已经写好的工具类,而这些工具提供的方法经常是static方法,在这里,直接贴出<PowerMock实战手册>中的例子 待测试方法: public class ...

  5. 用PowerMock mock 临时变量

    在开发时,经常遇到这种情况,被测试方法所调用的类不是通过构造注入的,而是通过临时new出来的,如下面待测方法: public class EmployeeService { private Emplo ...

  6. PowerMock遇到的问题——5

    在做单元测试时,有时在一个方法中会调用这个类的其他私有方法,那么如何指定这些方法的返回值呢? 解决方法:用 createPartialMock 具体用法如下: TestClass test=Power ...

  7. 用maven搭建 testNG+PowerMock+Mockito测试框架

    单元测试是开发中必不可少的一部分,是产品代码的重要保证. Junit和testNG是当前最流行的测试框架,Junit是使用最广泛的测试框架,有兴趣的话自己baidu一下. testNG基于Junit和 ...

  8. PowerMock 简介--转载

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-powermock/ EasyMock 以及 Mockito 都因为可以极大地简化单元测试的书 ...

  9. PowerMock遇到的问题——4

    当我们在测试一个方法的构造方法的时候,有的时候内部需要new一些对象,这是就需要用到PowerMock.exceptNew(),这个方法,但有时候传的参数有关键字this,比如SAPPublisher ...

  10. PowerMock 遇到的问题——2

    如果我们要测试的类继承另一个类,而且在构造方法中有super():那么怎么Mock那个super语句呢? 在PowerMock中有一个suppressConstructor方法,具体写法如下: Pow ...

随机推荐

  1. mysql 循环控制

    1.使用whileDROP PROCEDURE IF EXISTS `addstudent`;DELIMITER ;;CREATE PROCEDURE `addstudent`(iNum int)BE ...

  2. Python学习笔记4—列表

    列表定义 >>> a=['] >>> type(a) <type 'list'> >>> bool(a) #列表有值,则为true T ...

  3. C++——类和动态内存分配

    一.动态内存和类 1.静态类成员 (1)静态类成员的特点 无论创建多少对象,程序都只创建一个静态类变量副本.也就是说,类的所有对象都共享同一个静态成员. (2)初始化静态成员变量 1)不能在类声明中初 ...

  4. Python中的Class的讨论

    尽管Python在Function Programming中有着其他语言难以企及的的优势,但是我们也不要忘了Python也是一门OO语言哦.因此我们关注Python在FP上的优势的同时,还得了解一下P ...

  5. 详解DHV:怎么具体展示高价值

    我的理解里面:高价值分两个部分,一个是静态的,一个是动态的. 我把静态的称为硬性指标,动态的称为软性指标. 下面我给大家仔细解释一下两个指标的具体展示. ----------------------- ...

  6. Linux下scp命令的用法

    scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名 对拷文件夹 (包括文件夹本身) scp -r   /home/wwwroot/www/charts/util root@192.168.1 ...

  7. DirectX中的纹理及其创建

    正如大多初学者会遇到一个问题, 导入的图片为何不是原来的尺寸?例如800*600的实际上通过D3DXCreateTextureFromFile后变成的是1024*1024,即宽和高默认都会自动扩展为2 ...

  8. 使用mybatis操作mysql数据库SUM方法返回NULL解决

    使用SQL语句用函数SUM叠加的时候,默认查询没有值的情况下返回的是NULL,而实际可能我们要用的是返回0 解决: SELECT SUM(total)   FROM test_table 改成: SE ...

  9. struts2文件下载相关信息

    struts.xml文件配置: <span style="font-size:16px;"><?xml version="1.0" encod ...

  10. 从别人那淘的知识 深入剖析Java中的装箱和拆箱

    (转载的海子的博文   海子:http://www.cnblogs.com/dolphin0520/) 深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来 ...