【发布时间】:2013-02-19 16:13:21
【问题描述】:
我有以下代码要测试:
Public MyClass() {
public static final boolean myFunc(int param1, String param2, long param3) {
SomeInterface var1 = SomeEnumImplementingSomeInterface.INSTANCE;
SomeOtherInterface var2 = var1.getInstanceOfSomeOtherInterface();
String str = var2.getValue();
if (str.equals("ABCD"))
return true;
else
return false;
}
}
有什么方法可以在这里将模拟对象分配给 var1 吗?
我能想到的一种解决方法是将 var1 声明为类变量(在这种情况下它必须是静态的,因为访问它的方法是静态的),然后通过白盒将模拟对象分配给它。但我不想仅仅为了测试而改变设计。
请避免建议我更改课程设计。
【问题讨论】:
-
看起来您正在尝试测试
var1.getInstanceOfSomeOtherInterface()方法返回的任何内容。为什么需要模拟枚举? -
最好设计类以便于测试
-
@BheshGurung 我正在尝试测试
var2.getValue()返回的值。我过度简化了实际的课程。其他一些值正在传递给这个getValue()函数。
标签: java unit-testing junit easymock powermock