首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JMockit MockUp作为默认接口方法

如何使用JMockit MockUp作为默认接口方法
EN

Stack Overflow用户
提问于 2016-07-14 00:08:43
回答 0查看 1.4K关注 0票数 1

尝试在Java8默认接口方法上应用MockUp时,JMockit告诉我找不到该方法。这已经在JMockit 1.15、1.19和1.25中尝试过了。下面是一个非常简单的用例:

代码语言:javascript
复制
@RunWith(JMockit.class)
public class TestTest {

    public interface MyInterface {
        default void foo(int f) {
            bar(String.valueOf(f));
        }

        void bar(String s);
    }

    public class MyClass implements MyInterface {
        public void bar(String s) {
            System.out.println(s);
        }
    }

    @Test
    public void testtest() throws Exception {
        new MockUp<MyClass>() {
            @Mock
            void foo(int i) {
                System.out.println("MOCKMOCK " + (i*2));
            }

            @Mock
            void bar(String s) {
                System.out.println("MOCK " + s);
            }
        };

        MyClass baz = new MyClass();

        baz.foo(5);
        baz.bar("Hello world");
    }

}

这让我得到了错误

代码语言:javascript
复制
java.lang.IllegalArgumentException: Matching real methods not found for the following mocks:
com.example.dcsohl.TestTest$1#foo(int)
    at com.example.dcsohl.TestTest$1.<init>(TestTest.java:29)
    at com.example.dcsohl.TestTest.testtest(TestTest.java:29)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ...

我们如何才能@Mock这个方法?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38356747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档