根据Jmockit教程中的示例,以下代码应该可以解决问题:
@BeforeClass
public static void setUpClass() {
new MockUp<UtilJndi>(){
@Mock
public static String getDirectoryFromContext(Property jndiName) // line 66
throws DirectoryNotFoundException {
return "noDirectory";
}
};
}
但是它显示:
myclass.java:[66,29] 错误:静态声明非法
我该如何解决这个问题?
我会添加另一个解决方法,适用于我的情况:
我创建了一个扩展了MockUp的模拟类:
public static class MockUtilJndi extends MockUp<UtilJndi> {
public MockUtilJndi() {
super();
}
@Mock
public static String getDirectoryFromContext(Property jndiName)
throws DirectoryNotFoundException {
return "noDirectory";
}
}
如果您注意到我在构造函数中调用了super()。因为根据文档,如果您调用MockUp构造函数,它将更改目标类中的实现。所以一旦您在模拟类的构造函数中有了这个,您只需要在@BeforeClass注释方法中创建您的类即可:
@BeforeClass
public static void setUpClass() {
new MockUtilJndi();
}