JUnit单测类属性注入

举报
西魏陶渊明 发表于 2022/09/25 01:11:37 2022/09/25
【摘要】 通过前面的阅读我们已经能拿到了所有的容器启动参数。那么我们可以思考下。我们自己的 单测类其实并没有交给容器来管理,那么我们的单测类中的属性都是什么时候注入的呢? 答案就在 TestExecutionListener public interface TestExecutionListener { default vo...

通过前面的阅读我们已经能拿到了所有的容器启动参数。那么我们可以思考下。我们自己的 单测类其实并没有交给容器来管理,那么我们的单测类中的属性都是什么时候注入的呢?

答案就在 TestExecutionListener


    
  1. public interface TestExecutionListener {
  2. default void beforeTestClass(TestContext testContext) throws Exception {
  3. }
  4. default void prepareTestInstance(TestContext testContext) throws Exception {
  5. }
  6. default void beforeTestMethod(TestContext testContext) throws Exception {
  7. }
  8. default void beforeTestExecution(TestContext testContext) throws Exception {
  9. }
  10. default void afterTestExecution(TestContext testContext) throws Exception {
  11. }
  12. default void afterTestMethod(TestContext testContext) throws Exception {
  13. }
  14. default void afterTestClass(TestContext testContext) throws Exception {
  15. }
  16. }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

通过名字我们发现了貌似一个可以进行依赖注入的类。没错就是在这里,在单侧方法执行前。通过


    
  1. public class DependencyInjectionTestExecutionListener extends AbstractTestExecutionListener {
  2. @Override
  3. public void beforeTestMethod(TestContext testContext) throws Exception {
  4. if (Boolean.TRUE.equals(testContext.getAttribute(REINJECT_DEPENDENCIES_ATTRIBUTE))) {
  5. if (logger.isDebugEnabled()) {
  6. logger.debug("Reinjecting dependencies for test context [" + testContext + "].");
  7. }
  8. injectDependencies(testContext);
  9. }
  10. }
  11. protected void injectDependencies(TestContext testContext) throws Exception {
  12. Object bean = testContext.getTestInstance();
  13. Class<?> clazz = testContext.getTestClass();
  14. AutowireCapableBeanFactory beanFactory = testContext.getApplicationContext().getAutowireCapableBeanFactory();
  15. beanFactory.autowireBeanProperties(bean, AutowireCapableBeanFactory.AUTOWIRE_NO, false);
  16. beanFactory.initializeBean(bean, clazz.getName() + AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX);
  17. testContext.removeAttribute(REINJECT_DEPENDENCIES_ATTRIBUTE);
  18. }
  19. }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/125858100

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。