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

Partial mock local private method or public method in the class and suppress static initial block

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