【发布时间】:2017-07-06 10:38:46
【问题描述】:
我在为我的一种方法编写单元测试时遇到问题。它从不同的类调用一个方法,更糟糕的是,它会根据服务器连接进行一些处理,所以我需要以某种方式模拟它,但是我找不到如何做到这一点的答案。我还想指出,经过测试的方法不会将这个不同的类对象作为参数,而是在自身内部实例化它,所以它看起来像这样:
public class Class1 {
public MyEnum method1(String myString){
Class2 class2 = new Class2();
return class2.method2(myString);
}
}
public class Class2 {
public MyEnum method2(String myString){
//returns some value after communication with a server
}
}
所以基本上我需要模拟 method2 返回值,但是因为它的类是在 method1 内部实例化的,所以我看不到这样做的方法。有没有什么方法可以在没有实际服务器连接的情况下进行测试?
【问题讨论】:
-
Mockito 不支持你想要的(模拟
Class2),至少目前不支持(可能在未来的版本中)。您需要使用支持模拟“未来对象”的模拟库,例如 PowerMock。 -
PowerMock 确实做到了,谢谢。
标签: java unit-testing mocking mockito testng