使用ReflectionTestUtils解決依賴注入
概述
當使用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");
}
}
參考
相關文章
- 使用google wire解決依賴注入Go依賴注入
- webapi - 使用依賴注入WebAPI依賴注入
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- Laravel 使用依賴注入呼叫方法Laravel依賴注入
- angular依賴注入Angular依賴注入
- XUnit 依賴注入依賴注入
- Struts 依賴注入依賴注入
- 一、.Net Core 依賴注入詳解及Autofac使用依賴注入
- Android依賴注入之BufferKnife 8.0註解使用Android依賴注入
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- Dependency Injection-依賴注入詳解依賴注入
- ASP.NET Core中的依賴注入(2):依賴注入(DI)ASP.NET依賴注入
- [譯] 依賴注入?? 哈??依賴注入
- Angular 依賴注入原理Angular依賴注入
- .Net Core — 依賴注入依賴注入
- 理解 Angular 依賴注入Angular依賴注入
- Spring依賴注入Spring依賴注入
- Spring依賴注入---Spring依賴注入
- 依賴注入系列教程依賴注入
- 我看依賴注入依賴注入
- 依賴注入是否值得?依賴注入
- 聊聊依賴注入註解@Resource和@Autowired依賴注入
- Swift中依賴注入的解耦策略Swift依賴注入解耦
- Laravel Dependency Injection (依賴注入) 概念詳解Laravel依賴注入
- 反射、註解與依賴注入總結反射依賴注入
- Spring學習:簡單實現一個依賴注入和迴圈依賴的解決Spring依賴注入
- Asp .Net Core 依賴注入依賴注入
- Spring IOC——依賴注入Spring依賴注入
- 入門系列-依賴注入依賴注入
- C# 依賴注入 & MEFC#依賴注入
- Spring 依賴注入 DISpring依賴注入
- 關於依賴注入(typescript)依賴注入TypeScript
- 什麼是依賴注入依賴注入
- .NET8 依賴注入依賴注入
- spring 的依賴注入Spring依賴注入
- 深入淺出依賴注入依賴注入
- C# Unity依賴注入C#Unity依賴注入
- JavaScript裡的依賴注入JavaScript依賴注入