有没有人知道为什么在这个例子中,当运行“ATest”时,我得到一行“return b.getBAutoWiredObject()。getString();”
对此有任何见解将不胜感激。
@RunWith(MockitoJUnitRunner.class)
public class ATest {
@Mock
private A a;
@Test
public void testMethod() {
String testedString = a.method();
assertEquals("blah", testedString);
}
}
@Service("A")
public class A {
public String method() {
B b = new B();
return b.getBAutoWiredObject().getString();
}
}
@Component
public class B {
@Autowired
@Qualifier("Bautowire")
private BAutoWiredObject bAutoWiredObject;
public BAutoWiredObject getBAutoWiredObject() {
return bAutoWiredObject;
}
}
@Service("Bautowire")
public class BAutoWiredObject {
private String string = new String("blah");
public void getString() {
return string;
}
}
答案 0 :(得分:0)
通常,答案是null
因为您自己创建了B
实例。 Spring并没有参与,所以它没有自动装配任何东西。
在这种情况下,您的A
对象是@Mock
,并且通常实现模拟以在任何具有返回类型的方法中返回null
参考类型。 您的method()
实施实际上并没有被调用。模拟的实现是。
这是假设您的测试实际编译并且使用@Test
带注释的方法有效。
assertEquals(testedString, "blah");
应该是
assertEquals("blah", testedString);
第一个参数应该是预期值,第二个参数应该是实际值。