Java 为什么赢了';JMockit使用这个(显然)有效的可注射的吗?
我最近重构了我的一个类,以在其构造函数中接受一个通用对象的iterable,现在无法让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<
@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?)行为是相同的。