Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么赢了';JMockit使用这个(显然)有效的可注射的吗?_Java_Junit4_Jmockit - Fatal编程技术网

Java 为什么赢了';JMockit使用这个(显然)有效的可注射的吗?

Java 为什么赢了';JMockit使用这个(显然)有效的可注射的吗?,java,junit4,jmockit,Java,Junit4,Jmockit,我最近重构了我的一个类,以在其构造函数中接受一个通用对象的iterable,现在无法让JMockit实例化测试类的@Tested字段。下面是一个显示相同问题的精简测试用例: import java.util.Collections; import mockit.Injectable; import mockit.Tested; import org.junit.Test; public class FooTest { public static interface Generic<

我最近重构了我的一个类,以在其构造函数中接受一个通用对象的iterable,现在无法让JMockit实例化测试类的
@Tested
字段。下面是一个显示相同问题的精简测试用例:

import java.util.Collections;
import mockit.Injectable;
import mockit.Tested;
import org.junit.Test;

public class FooTest {
    public static interface Generic<T> {}

    public static class Foo<T> implements Generic<T> {
        public Foo(Iterable<Generic<T>> iterable) {}
    }

    @Tested Foo<Object> tested;
    @Injectable Iterable<Generic<Object>> injectable = Collections.emptyList();

    @Test
    public void testFoo() {
        // java.lang.IllegalArgumentException: No constructor in class FooTest$Foo that can be satisfied by available injectables
    }
}
import java.util.Collections;
导入mockit.Injectable;
导入mockit.Tested;
导入org.junit.Test;
公务舱{
公共静态接口通用{}
公共静态类Foo实现了泛型{
公共Foo(Iterable Iterable){}
}
@测试食物测试;
@Injectable Iterable Injectable=Collections.emptyList();
@试验
公共void testFoo(){
//java.lang.IllegalArgumentException:类FooTest$Foo中没有可用注入函数可以满足的构造函数
}
}
我意识到我可以通过在
@Before
方法中创建
tested
来解决这个问题,但我想先了解一下为什么失败。:-)


我使用的是Java 1.7.051、JMockit 1.8和JUnit 4.11。

自JMockit 1.8起,
@Tested
功能尚未完全支持泛型类型参数


这就是说,JMockit 1.9(即将于6月22日发布)增加了对此类场景的支持。

我不知道JMockit,但不需要声明
Foo
静态
?否则会有一个隐式的
FooTest。这个
实例需要提供。@DanielPryden哎呀,简化测试用例是个错误。如果接口和类是静态的,那么(mis?)行为是相同的。