混合Guice和JMockit时的GenericSignatureFormatError

时间:2015-01-15 20:24:06

标签: guice jmockit

Guice和JMockit似乎没有相处......

以下测试抛出GenericSignatureFormatError。为什么呢?

@RunWith(JMockit.class)
public class GuiceAndJMockitTest {

    public interface Foo {
    }

    @Test
    public void guiceAndJMockitGetAlong(@Mocked final Foo foo) {
        Guice.createInjector(new AbstractModule() {
            @Override
            protected void configure() {
                bind(Foo.class).toInstance(foo);
            }
        });
    }

}

由于

JMockit 1.13

Guice 3.0

1 个答案:

答案 0 :(得分:2)

这似乎是由于实现给定接口的JMockit生成的类中的一些无效“通用信息”。所以,显然是JMockit中的一个错误;我会调查一下。

但是,如果您想模拟实现接口并由Guice注入的对象,我建议使用@Capturing而不是@Mocked。这样,任何实现声明的模拟类型的类也将被模拟。并且不需要创建特定于测试的Guice注入器;只需使用与生产相同的Guice模块。