之前jmockit(1.5)的静态方法根据the example in the Jmockit tutorial这段代码应该做的伎俩:惩戒
@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] error: Illegal static declaration
我怎样才能解决这个问题?
我会添加其他的解决方法至极的工作对我来说:
创建我的嘲笑类扩展样机:
public static class MockUtilJndi extends MockUp<UtilJndi> {
public MockUtilJndi() {
super();
}
@Mock
public static String getDirectoryFromContext(Property jndiName)
throws DirectoryNotFoundException {
return "noDirectory";
}
}
如果您发现我所说的超()我的构造函数中。根据文件,如果你打电话样机构造它会改变实施目标类原因..所以一旦你有了这个在你嘲笑类的构造函数,你只需要创建类的@BeforeClass内部注解的方法:
@BeforeClass
public static void setUpClass() {
new MockUtilJndi();
}
哪条线是66线? –
public static String getDirectoryFromContext(Property jndiName) –
虽然我不知道JMockit,但问题似乎对我很清楚。错误消息“非法静态声明”告诉你一切。 “静态”是错误的。此外,您链接的示例在此处不使用静态方法。你怎么会相信,静态必须放在那里? (混淆......) – Seelenvirtuose