【发布时间】:2018-04-16 19:10:08
【问题描述】:
我正在编写一个 JUnit 测试,我需要在其中注入 2 个向量的模拟,如下所示:
@AllArgsConstructor
public abstract class AbstractMyObject {
@Autowired
private Vector<String> firstVector;
@Autowired
private Vector<String> secondVector;
public abstract void absFunc();
public void doThis() {
System.out.println(firstVector);
System.out.println(secondVector);
}
}
@Component
public class MyObject extends AbstractMyObject {
public MyObject(final Vector<String> firstVector, final Vector<String> secondVector) {
super(firstVector, secondVector);
}
@Override
public void absFunc() {
}
}
public class TestClass {
private static String[] array1 = {"Hello", "World"};
private static String[] array2 = {"junit", "mockito"};
@Spy
private Vector<String> firstVector = new Vector<>(Arrays.asList(array1));
@Spy
private Vector<String> secondVector = new Vector<>(Arrays.asList(array2));
@InjectMocks
private MyObject myObject;
private void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test1() {
initMocks();
myObject.doThis();
}
}
运行这个测试的输出是:[Hello, World]
如何确保正确分配两个向量?
我找不到任何关于将 @Qualifier 与 Spy 和 InjectMocks 一起使用的示例或文档。
【问题讨论】:
-
你说的是什么意思,这样注入框架才不会混淆?是否有一些具体问题需要解决。请澄清。
-
我看到,在注入间谍时的单元测试中,它们包含相同的值,即 array2。即模拟 MyObject 包含 2 个向量,均初始化为 array2。
-
请显示您正在观察此问题的测试代码。
-
我已经用所需的类更新了代码。我看到当所讨论的类是抽象类的派生类时会发生这种情况。
标签: spring junit dependency-injection mockito spy