美文网首页
使用ReflectionTestUtils解决依赖注入

使用ReflectionTestUtils解决依赖注入

作者: 永志 | 来源:发表于2016-07-25 14:11 被阅读0次

概述

当使用junit来测试Spring的代码时,为了减少依赖,需要给对象的依赖,设置一个mock对象,但是由于Spring可以使用@Autoware类似的注解方式,对私有的成员进行赋值,此时无法直接对私有的依赖设置mock对象。可以通过引入ReflectionTestUtils,解决依赖注入的问题。

使用简介

在Spring框架中,可以使用注解的方式如:@Autowair、@Inject、@Resource,对私有的方法或属性进行注解赋值,如果需要修改赋值,可以使用ReflectionTestUtils达到目的。

代码例子

待测试类:Foo

package com.github.yongzhizhan.draftbox.springtest;

import org.springframework.beans.factory.annotation.Autowired;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * 被测类
 */
public class Foo {
    @Autowired
    private String m_String;

    @PostConstruct
    private void onStarted(){
        System.out.println("on started " + m_String);
    }

    @PreDestroy
    private void onStop(){
        System.out.println("on stop " + m_String);
    }
}

使用ReflectionTestUtils解决依赖注入:

package com.github.yongzhizhan.draftbox.springtest;

import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;

/**
 * 使用ReflectionTestUtils解决依赖注入
 * @author zhanyongzhi
 */
public class ReflectionTestUtilsTest {
    @Test
    public void testDefault(){
        Foo tFoo = new Foo();

        //set private property
        ReflectionTestUtils.setField(tFoo, "m_String", "Hello");

        //invoke construct and destroy method
        ReflectionTestUtils.invokeMethod(tFoo, "onStarted");
        ReflectionTestUtils.invokeMethod(tFoo, "onStop");
    }
}

在github中查看

参考

unit-testing

相关文章

  • 使用ReflectionTestUtils解决依赖注入

    概述 当使用junit来测试Spring的代码时,为了减少依赖,需要给对象的依赖,设置一个mock对象,但是由于S...

  • spring_IOC总结(三)注解配置--依赖注入

    基于注解依赖注入 xml配置 使用注解--依赖注入

  • 依赖注入 1

    为什么使用依赖注入 A 依赖 B,B 依赖 C,C 依赖 D...使用依赖注入后,只需要关注 B 。 为什么使用 ...

  • Guice 快速入门

    Guice是谷歌推出的一个轻量级依赖注入框架,帮助我们解决Java项目中的依赖注入问题。如果使用过Spring的话...

  • 单元测试的时候模拟 @Value 属性

    使用 ReflectionTestUtils.setField 通过反射进行设置

  • 理解ASP.NET Core 依赖注入

    目录: 一、什么是依赖注入 1.1、什么是依赖? 1.2、什么是注入? 1.3、依赖注入解决的问题? 二、服务的生...

  • Jetpack - Hilt

    Jetpack - Hilt依赖注入、依赖注入框架Android 常用的依赖注入框架Hilt 的简单使用 1. 依...

  • 依赖注入

    angular重要概念 一、依赖注入 依赖注入 : 所谓依赖注入,即将函数需要使用到自身外作用域的变量(依赖),将...

  • Dagger2使用简析——序章

    在具体使用前,首先来了解一个概念——依赖注入 1. 依赖注入 什么是依赖注入依赖注入是由于类之间的依赖关系产生的,...

  • angular依赖注入

    什么是依赖注入?依赖注入就是将依赖关系注入到将使用它的依赖对象(也就是客户端)依赖注入可能是更好地做到不改变程序客...

网友评论

      本文标题:使用ReflectionTestUtils解决依赖注入

      本文链接:https://www.haomeiwen.com/subject/xhowjttx.html