Java 在类之前使用jmockit(1.5)模拟静态方法
根据此代码,您应该执行以下操作:Java 在类之前使用jmockit(1.5)模拟静态方法,java,testing,mocking,jmockit,Java,Testing,Mocking,Jmockit,根据此代码,您应该执行以下操作: @BeforeClass public static void setUpClass() { new MockUp<UtilJndi>(){ @Mock public static String getDirectoryFromContext(Property jndiName) // line 66 throws DirectoryNotFoundException {
@BeforeClass
public static void setUpClass() {
new MockUp<UtilJndi>(){
@Mock
public static String getDirectoryFromContext(Property jndiName) // line 66
throws DirectoryNotFoundException {
return "noDirectory";
}
};
}
好的,我将更新我的评论以获得答案 首先,错误信息非常清楚。“非法静态声明”只是意味着静态关键字放置错误。把它拿走 当您试图模拟一个静态方法时,您可能会认为还必须放置static关键字。但报告说: 但是,方法修饰符(包括public、final甚至static)不必相同 这仅仅意味着,即使不声明静态方法,也可以模拟静态方法
嗯。。。我强烈感觉到,文件的措辞有点混乱。显然,这不是一个选项,但您不能将其声明为静态。第66行是哪一行?公共静态字符串getDirectoryFromContext(属性jndiName)虽然我不知道JMockit,但问题对我来说似乎很清楚。错误消息“非法静态声明”告诉您一切。“静态”是错误的。此外,您链接的示例在此不使用静态方法。你怎么会相信,静电必须放在那里?(迷惑…)好的。。所以如果不是这个地方。。你能告诉我如何在上课前模拟静态方法吗?
public static class MockUtilJndi extends MockUp<UtilJndi> {
public MockUtilJndi() {
super();
}
@Mock
public static String getDirectoryFromContext(Property jndiName)
throws DirectoryNotFoundException {
return "noDirectory";
}
}
@BeforeClass
public static void setUpClass() {
new MockUtilJndi();
}