微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在测试过程中注入@Autowired私有字段

如何解决在测试过程中注入@Autowired私有字段

您可以在测试中绝对在MyLauncher上注入模拟。我敢肯定,如果您显示您正在使用的模拟框架,将会很快提供答案。使用mockito,我会考虑使用@RunWith(MockitoJUnitRunner.class)并为myLauncher使用注释。它看起来像下面的样子。

@RunWith(MockitoJUnitRunner.class)
public class MyLauncherTest
    @InjectMocks
    private MyLauncher myLauncher = new MyLauncher();

    @Mock
    private MyService myService;

    @Test
    public void sometest() {

    }
}

解决方法

我有一个组件安装程序,它实际上是一个应用程序的启动器。它的配置如下:

@Component
public class MyLauncher {
    @Autowired
    MyService myService;

    //other methods
}

MyService带有@ServiceSpring注释,并自动连接到我的启动器类中,没有任何问题。

我想为MyLauncher编写一些jUnit测试用例,为此,我启动了一个这样的类:

public class MyLauncherTest
    private MyLauncher myLauncher = new MyLauncher();

    @Test
    public void someTest() {

    }
}

我可以为MyService创建一个Mock对象,然后将其注入测试类中的myLauncher吗?由于Spring正在处理自动装配,因此我目前在myLauncher中没有吸气剂或吸气剂。如果可能的话,我不想添加getter和setter。我可以告诉测试用例使用@Beforeinit方法将模拟对象注入自动接线的变量中吗?

如果我要彻底解决这个问题,请随意说。我还是这个新手。我的主要目标是只具有一些Java代码或注释,即可将模拟对象放入该@Autowired变量中,而无需编写setter方法或使用applicationContext- test.xml文件。我宁愿在.java文件中维护测试用例的所有内容,而不必只为测试维护单独的应用程序内容。

我希望将 Mockito
用于模拟对象。过去,我是通过使用org.mockito.Mockito和创建对象来完成此操作的Mockito.mock(MyClass.class)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。