有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何避免“除非模拟类型是可注入的或动态的,否则无法进入方法”?

一般来说:是否可以为我自己不创建的对象调用方法的原始实现?我的意思是,我可以为我在测试代码中创建的实例调用inv.proceed(),但我不知道如何为在测试代码中创建的实例调用。原因是,我知道的唯一一种不受控制地模拟实例的方法是使用@Mocked注释,但它会使inv.proceed()失败,并带有“UnsupportedOperationException”

详细信息:我得到的错误代码如下:

new NonStrictExpectations() {
    @Mocked("process")
    MyClassUnderTest o;
    {
        o.process(any);
        result = new Delegate<MyClassUnderTest>() {
            public void process(Invocation inv, Object o) {
                inv.proceed(); //Fails on this line with UnsupportedOperationException
            }
        }
    }
}

当我使用动态部分模拟时,异常消失:

new NonStrictExpectations(o) {
    {
        o.process(any);
        result = new Delegate<MyClassUnderTest>() {
            public void process(Invocation inv, Object o) {
                inv.proceed();
            }
        }
    }
}

我不明白。是不是@Mocked是“可注射的”


共 (0) 个答案