Jmockdata

Jmockdta是一款實現模擬JAVA類型或對象的實例化並隨機初始化對象的數據的工具框架。單元測試的利器。The plug-in of Jmockdata what through random algorithm mock java data.Jmockdata外掛程式通過隨機算法模擬Java數據.

基本介紹

  • 軟體名稱:Jmockdata
  • 軟體平台:跨平台
  • 最近更新時間:2017年01月04日
  • 軟體語言:Java
  • 開發商:個人
  • 軟體授權Apache 2.0
  • 軟體版本:1.0
  • 軟體大小:53k
基本介紹,引入,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來實現一個攔截器

引入

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));
            }
}

熱門詞條

聯絡我們