【发布时间】:2017-08-03 11:12:37
【问题描述】:
下面提到的是我需要测试的类:
public class MyClass {
private String key;
public MyClass(Connection con) {
key = ThirdPartyApi.getkey(con);
}
public String getKey() {
return key;
}
}
现在我需要测试这个构造函数,但是我无法模拟这个第三方 API 调用。测试用例如下所述:
public class MyClassTest{
@Test
public void test1(){
MyClass c = new MyClass(dummyconnection);
assertNotNull(c.getKey != null);
}
}
但是这种情况会给我一个错误,即 ThirdPartyAPI 类由于连接对象被模拟而失败。
所以我想模拟这个 ThirdPartyApi 调用。是否可以使用 Easymock、powermock?
【问题讨论】:
-
你为什么不把键作为参数传递?
-
我觉得我的问题有点不清楚,我重新编辑了一遍。
-
我也是这么说的:为什么不直接把key传给构造函数???
-
正如您所解释的,您想要做的是测试您的
getKey()函数? -
好吧,要准确回答您的问题,您正在尝试存根静态方法。 Easymock 不是开箱即用的,这就是为什么您需要使用 PowerMock 的原因 - 它与存根任何其他静态方法完全相同,PowerMock 文档中对此进行了很好的解释。但是,您是否真的应该这样做是另一回事。构造函数应该是一段非常简单的代码,其中没有太多逻辑。如果是我,我会考虑如何以不同的方式设计我的课程。
标签: java junit4 powermock easymock