尝试使用junit中的反射访问私有方法时,模拟对象不起作用

时间:2019-03-07 12:32:59

标签: java junit mocking

当我尝试使用反射访问私有方法时,模拟对象不起作用

主要类别:

@Component
public class ActualClass{
@Autowired 
MockClass data;
private String sampleMethod(String data){
//
List<String> list=data.getdata("something") // trying to mock this line 
//}
}

模拟课程:

@Component
public class MockClass{
public List<String> getdata(String serviceName){
return restTemplate.getForObject("http://localhost:9000/data/something", 
ArrayList.class); this line will return some datas as list}
}

我的测试用例:

public class TestCases{

@Autowired 
MockClass mockobj;

@Autowired
@InjectedMocks
ActualClass actualClass

@Test
public void valid(){
MockitoAnnotations.initMocks(this);

List<String> obj=new ArrayList<String>();
obj.add("something")
when(mockobj.getdata("something")).thenreturn(obj);

Class<?> cObject=Class.forName("com.ActualClass");
ActualClass actualClass=(ActualClass) cObject.newInstance();
Method method=cObject.getDeclaredMethod("sampleMethod",String.class);
method.setAccessible(true);
method.invoke(actualClass,"date");}
}

有人可以告诉我我的测试用例出了什么问题吗?当我访问公共方法时,相同的模拟对象正在工作。

我只有私人方法有问题。

我该如何解决?

0 个答案:

没有答案