如果我用MockBean替换Autowired,它可以工作,但是我不知道为什么
它的工作原理,因为
@MockBean内容替换或 增加 一个bean 到 Spring上下文。
在您的情况下,它将
repository在Spring上下文中添加一个模拟。
因此,这不会抛出任何异常
UnsatisfiedDependencyException。
但这并不需要您最初使用时用来 从* 上下文中@Autowired
注入bean 的需求。 *
@Autowired``@MockBean实际上,这是两个非常不同的事物,您永远无法替代相同的需求。
附带说明,您可能应该重新考虑构建测试的方式。
实际上,您正在使用
SpringJUnit4ClassRunner跑步者。
这意味着您想使用Spring容器进行测试。
这是一种有效的方法。但是在这种情况下,为什么要在Spring容器之外创建VehiculeServiceImpl?
service = new VehiculeServiceImpl(repository);
您应该注入服务。
请注意,在容器外部创建被测类的新实例也是一种非常有效的方法。
我们在编写普通单元测试时就这样做了。如果要这样做,请不要使用Spring Boot运行程序,否则会使测试变慢。



