java-Spring依赖项未注入到BeforeSuite方法中?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-Spring依赖项未注入到BeforeSuite方法中?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2190字,纯文字阅读大概需要4分钟。
内容图文
![java-Spring依赖项未注入到BeforeSuite方法中?](/upload/InfoBanner/zyjiaocheng/667/563782a1dd24406cb3b20d6ba5f8c2c4.jpg)
我正在运行一个使用TestNG作为测试框架的Spring Boot应用程序.我的测试设置如下:
父类,负责设置逻辑并负责所有配置工作:
@ContextConfiguration(classes = {TestingConfig.class}, initializers = ConfigFileApplicationContextInitializer.class)
@ContextConfiguration(classes = TestConfig.class)
@TestPropertySource(locations = "classpath:application.yml")
public abstract ParentTestClass extends AbstractTestNGSpringContextTests {
@Autowired
private ServiceClient serviceClient;
@BeforeSuite
public void beforeClass() {
Assert.assertNotNull(serviceClient);
serviceClient.doSomeSetupWork();
}
}
有多个子测试类.每个on都从父测试类继承而来,以便它们共享相同的设置逻辑.
public ChildTestClass1 extends ParentTestClass {
@Test
public void someTest() {
...
}
// More tests not shown
}
public ChildTestClass2 extends ParentTestClass {
@Test
public void anotherTest() {
...
}
// More tests not shown
}
serviceClient是测试套件所依赖的一个Web服务的客户端.在运行测试用例之前,我正在与服务客户端进行呼叫以在其他服务中设置数据.
问题是这样的:以前我使用@BeforeClass批注,这意味着对于每个子测试类,父类的setup方法都运行一次.可以,但是等待相同的设置多次运行真的很慢.
所以我对自己想:我只是将ParentTestClass中的@BeforeClass批注改为@BeforeSuite!那将解决我所有的问题!
错误.
现在,当我运行它时,Assert.assertNotNull(serviceClient);父类的beforeClass()方法中的行失败.简而言之,不会将Spring依赖项注入到@BeforeSuite带注释的方法中,即使在使用@BeforeClass进行注解的方法中也将它们注入了方法中.
有什么想法吗?我真的很感激!
解决方法:
我相信这是按设计工作的.通过查看如何在org.springframework.test.context.testng.AbstractTestNGSpringContextTests中构建实现(从中进行扩展),将依赖项通过org.springframework.test.context.support.DependencyInjectionTestExecutionListener#injectDependencies注入到您的测试类中. (这是一个侦听器).
包括DependencyInjectionTestExecutionListener在内的所有侦听器只能通过org.springframework.test.context.testng.AbstractTestNGSpringContextTests#springTestContextPrepareTestInstance调用,这是@BeforeClass(alwaysRun = true)分类方法.
因此,只有在此@BeforeClass注释方法运行完成之前,您的依赖项才可用.因此,您将必须移出@BeforeSuite方法,并使它仅与@BeforeClass批注一起使用.
如果您不需要多次进行服务设置,则需要在测试代码中添加仅在未完成的情况下进行设置的编辑检查.
内容总结
以上是互联网集市为您收集整理的java-Spring依赖项未注入到BeforeSuite方法中?全部内容,希望文章能够帮你解决java-Spring依赖项未注入到BeforeSuite方法中?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。