Jmockdta是一款實現模擬JAVA類型或對象的實例化並隨機初始化對象的數據的工具框架。單元測試的利器。The plug-in of Jmockdata what through random algorithm mock java data.Jmockdata外掛程式通過隨機算法模擬Java數據.
基本介紹
- 軟體名稱:Jmockdata
- 開發商:個人
- 軟體平台:跨平台
- 軟體版本:1.0
- 更新時間:2017/01/04
- 軟體語言:Java
- 軟體大小:53k
- 軟體授權:Apache 2.0
基本介紹,引入,Maven,Gradle,測試使用示例,
基本介紹
Jmockdta是一款實現模擬JAVA類型或對象的實例化並隨機初始化對象的數據的工具框架。單元測試的利器。
The plug-in of Jmockdata what through random algorithm mock java data.
Jmockdata外掛程式通過隨機算法模擬Java數據.
示例可以參考單元測試內容,具體介紹和用法可以參考如下:
模擬數據入口方法 JMockData.mock(JmockDataWrapper)
被模擬數據必須繼承JmockDataWrapper經過它的包裝
被模擬的數據最好是plain bean,只提供getter,setter,has,is方法的才可以被模擬
框架默認實現了40個元數據類型的數據模擬器包括:
short.class,Short.class,short[].class,Short[].class,
int.class,Integer.class,int[].class,Integer[].class,
long.class,Long.class,long[].class,Long[].class,
float.class,Float.class,float[].class,Float[].class,
double.class,Double.class,double[].class,Double[].class,
boolean.class,Boolean.class,boolean[].class,Boolean[].class,
char.class,Character.class,char[].class,Character[].class,
String.class,String[].class,
BigDecimal.class,BigDecimal[].class,
BigInteger.class,BigInteger[].class,
Date.class,Date[].class
通過對以上基本元數據類型的模擬實現,能夠進一步實現BEAN,LIST,SET,ARRAY等結構的模擬。
可以通過JmockDataContext 獲取模擬過程的所有上下文信息,甚至可以列印整個模擬類型樹
可以通過JMockDataManager 註冊模擬數據類型,重寫模擬數據算法,註冊模擬數據類攔截器等
可以通過實現MockData來實現一個模擬數據類型
可以通過實現JmockDataTemplate,或者繼承JmockDataTemplateDefault來重寫模擬數據算法
可以通過實現JmockDataInterceptor來實現一個攔截器
The plug-in of Jmockdata what through random algorithm mock java data.
Jmockdata外掛程式通過隨機算法模擬Java數據.
示例可以參考單元測試內容,具體介紹和用法可以參考如下:
模擬數據入口方法 JMockData.mock(JmockDataWrapper)
被模擬數據必須繼承JmockDataWrapper經過它的包裝
被模擬的數據最好是plain bean,只提供getter,setter,has,is方法的才可以被模擬
框架默認實現了40個元數據類型的數據模擬器包括:
short.class,Short.class,short[].class,Short[].class,
int.class,Integer.class,int[].class,Integer[].class,
long.class,Long.class,long[].class,Long[].class,
float.class,Float.class,float[].class,Float[].class,
double.class,Double.class,double[].class,Double[].class,
boolean.class,Boolean.class,boolean[].class,Boolean[].class,
char.class,Character.class,char[].class,Character[].class,
String.class,String[].class,
BigDecimal.class,BigDecimal[].class,
BigInteger.class,BigInteger[].class,
Date.class,Date[].class
通過對以上基本元數據類型的模擬實現,能夠進一步實現BEAN,LIST,SET,ARRAY等結構的模擬。
可以通過JmockDataContext 獲取模擬過程的所有上下文信息,甚至可以列印整個模擬類型樹
可以通過JMockDataManager 註冊模擬數據類型,重寫模擬數據算法,註冊模擬數據類攔截器等
可以通過實現MockData來實現一個模擬數據類型
可以通過實現JmockDataTemplate,或者繼承JmockDataTemplateDefault來重寫模擬數據算法
可以通過實現JmockDataInterceptor來實現一個攔截器
引入
Maven
<dependency> <groupId>com.github.jsonzou</groupId> <artifactId>jmockdata</artifactId> <version>1.0</version> </dependency>
Gradle
compile group: 'com.github.jsonzou', name: 'jmockdata', version: '1.0'
測試使用示例
示例代碼片段如下:
package org.jsonzou.jmockdata.test; import com.alibaba.fastjson.JSON; import org.jsonzou.jmockdata.JMockData; import org.jsonzou.jmockdata.mockdata.JMockDataManager; import org.jsonzou.jmockdata.test.custommocktemplate.CustomJmockDataTemplate; import org.jsonzou.jmockdata.test.interceptor.OneJmockDataInterceptor; import org.jsonzou.jmockdata.test.registermockdatabean.MockDataStringBuffer; import org.jsonzou.jmockdata.test.wrapperbean.*; import org.junit.Test; /** * 測試 * * @version 1.0 * @since 2016/12/26 */ public class JMockDataTest { /** * 測試模擬簡單List<String> */ @Test public void mockTest_SimpleStringList() { MockDemoSimpleListStringWrapper mockData = JMockData.mock(MockDemoSimpleListStringWrapper.class); mockData.getJmockDataContext().printTree(); // 列印類型樹 print(mockData.getList()); } /** * 測試模擬任意類型的數據 */ @Test public void mockTest_MockAnyData() { MockDemoBeanAnyDataWrapper mockData = JMockData.mock(MockDemoBeanAnyDataWrapper.class); // mockData.getJmockDataContext().printTree(); // 列印類型樹 mockData.setJmockDataContext(null); print(mockData); } /** * 測試模擬自循環引用的數據 */ @Test public void mockTest_MockSelfRefData() { JMockDataManager.getInstance().setMaxSelfRefLevel(4);// 設定自循環體循環層級上限 MockDemoBeanSelfRefDataWrapper mockData = JMockData.mock(MockDemoBeanSelfRefDataWrapper.class); // mockData.getJmockDataContext().printTree(); // 列印類型樹 mockData.setJmockDataContext(null); print(mockData); } /** * 測試模擬類型攔截器,之攔截String類型的模擬 */ @Test public void mockTest_Interceptor() { JMockDataManager.getInstance().interceptors(OneJmockDataInterceptor.class); // 攔截器 =》只攔截String類型 MockDemoBeanSimpleDataWrapper mockData = JMockData.mock(MockDemoBeanSimpleDataWrapper.class); print(mockData.getSimpleData()); } /** * 測試模擬,增加自定義模擬類型,StringBuffer */ @Test public void mockTest_RegisterMockDataBean() { JMockDataManager.getInstance().registerMockData(new MockDataStringBuffer(), StringBuffer.class); MockDemoCustomStringBufferWrapper mockData = JMockData.mock(MockDemoCustomStringBufferWrapper.class); print(mockData.getStringBuffer()); } /** * 測試模擬,自定義模擬數據模板方法 */ @Test public void mockTest_CustomJmockDataTemplate() { JMockDataManager.getInstance().setMockTemplate(new CustomJmockDataTemplate()); MockDemoBeanSimpleDataWrapper mockData = JMockData.mock(MockDemoBeanSimpleDataWrapper.class); print(mockData.getSimpleData()); } /** * 列印json結構 * * @param data */ private void print(Object data) { System.out.println(JSON.toJSONString(data, true)); }}