-2
SimpleA.java類是目標類。我嘲笑SimpleB.java類的GetList方法,如果相加法非靜態它工作正常,但它顯示靜態add方法問題如果add方法是靜態的,則不會得到答案,否則非靜態add方法正在工作
SimpleA.java
import java.util.ArrayList;
public class SimpleA {
private static SimpleB obj1 ;
public static int add(){
ArrayList<Integer> arr1 = obj1.getList1();
ArrayList<Integer> arr2 = obj1.getList2();
int res=0;
for(Integer val : arr1){
res+=val;
}
for(Integer val1 : arr2){
res+=val1;
}
return res;
}
}
SimpleB.java
import java.util.ArrayList;
import java.util.Iterator;
public class SimpleB {
public ArrayList<Integer> getList1(){
System.out.println("inside class SimpleB and getlist1");
ArrayList<Integer> lst1 = new ArrayList<Integer>();
lst1.add(10);
lst1.add(20);
return lst1;
}
public ArrayList<Integer> getList2(){
System.out.println("inside class SimpleB and getlist2");
ArrayList<Integer> lst2 = new ArrayList<Integer>();
lst2.add(30);
lst2.add(40);
return lst2;
}
}
SimpleATest.java
這是測試類在這裏我測試了SimpleA.java類
import java.lang.reflect.Field;
import java.util.ArrayList;
import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
@RunWith(PowerMockRunner.class)
@PrepareForTest({SimpleA.class})
public class SimpleATest {
SimpleA simpleA1;
SimpleB mockSample;
@Before
public void setUp(){
ArrayList<Integer> lst = new ArrayList<Integer>();
lst.add(30);
lst.add(40);
lst.add(100);
simpleA1 = new SimpleA();
mockSample = PowerMock.createMock(SimpleB.class);
PowerMock.mockStatic(SimpleA.class);
EasyMock.expect(mockSample.getList1()).andReturn(lst);
EasyMock.expect(mockSample.getList2()).andReturn(lst);
PowerMock.replay(mockSample);
Whitebox.setInternalState(simpleA1,mockSample);
System.out.println("Init method is invoked");
}
@Test
public void testAdd(){
int res = simpleA1.add();
System.out.println("res = "+res);
}
@After
public void destroy(){
System.out.println("Destroy method is invoked");
}
}