juints中的模拟外部方法调用



我试图嘲笑我的班级其他类的呼叫。我看到的问题是,当我运行测试时,看起来我的模拟对象并没有被真实对象替换。我在这里举了一个简单的例子来解释此案。在这里,我想打印tada而不是this is awsome,方法printAwsome()默认使用。我已经将代码放在下面的链接中以供参考,请让我知道如果有的话,我在做什么。

https://gist.github.com/anonymous/1EAB366C6C60EFB75B9075F100A67C851B

excelsupportest打印this is awsome而不是tada,当我尝试模拟optionPane.printAwsome()时,有人可以将我指向我在这里做错了什么。

我可以推断出的问题,如果您想模拟对方法showMessageDialog的呼叫,请尝试嘲笑DefaultOptionPane如下:

DefaultOptionPane defaultOptionPane = mock(DefaultOptionPane.class);
when(defaultOptionPane.showMessageDialog(anyObject(), anyObject(), anyString(), anyInt()))
                .then(//do what you want to do here <Answer>);

当您使用任何一组参数拨打showMessageDialog时,这也是可读性的,您想返回您要返回then中的Answer的内容。

很长的故事很短,除非您将其作为参数传递给方法,否则无法模拟方法调用。

它成为范围的问题,因此更换此

   public void testMethod() {
        DefaultOptionPane optionPane = new DefaultOptionPane();
        System.out.println("Entering method");
        optionPane.printAwsome();
        System.out.println("Exiting Method");
      }

使用此

 public void testMethod(DefaultOptionPane optionPane) {
        System.out.println("Entering method");
        System.out.println(optionPane.printAwsome());
        System.out.println("Exiting Method");
    }

然后您可以模拟optionPane

相关内容

  • 没有找到相关文章

最新更新