我目前在 JUnit 测试中遇到困难,需要一些帮助。所以我得到了这个带有静态方法的类,它将重构一些对象。为了简单起见,我做了一个小例子。这是我的工厂课程:
class Factory {
public static String factorObject() throws Exception {
String s = "Hello Mary Lou";
checkString(s);
return s;
}
private static void checkString(String s) throws Exception {
throw new Exception();
}
}
这是我的测试课:
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Factory.class })
public class Tests extends TestCase {
public void testFactory() throws Exception {
mockStatic(Factory.class);
suppress(method(Factory.class, "checkString"));
String s = Factory.factorObject();
assertEquals("Hello Mary Lou", s);
}
}
基本上我试图实现的是私有方法 checkString() 应该被抑制(因此不会抛出异常),并且还需要验证方法 checkString() 是否实际在方法 factorObject() 中被调用。
更新:抑制与以下代码一起正常工作:
suppress(method(Factory.class, "checkString", String.class));
String s = Factory.factorObject();
...但是它为字符串“s”返回NULL。这是为什么?