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();
}