当前位置: 移动技术网 > IT编程>开发语言>Java > Junit单元测试数据生成工具类

Junit单元测试数据生成工具类

2019年09月16日  | 移动技术网IT编程  | 我要评论

王馨梓,湖南洪鑫物流,朋友 龙井说唱

在junit单元测试中,经常需要对一些领域模型的属性赋值,以便传递给业务类测试,常见的场景如下:

 com.enation.javashop.goods goods = new  com.enation.javashop.goods();
        goods.setbrandid(1);
        goods.setcategoryid(1);
        goods.setgoodsname("测试商品");
        goods.setprice(1.01);
        goods.setsn("100001");
        goods.setweight(1.01);

  

如果领域模型的属性特别多,手工去写set方法令人发指,写了一个生成的工具类,用法如下:

string mockcode = mockdatagenerator.create(goods.class);

 

生成结果:

com.enation.javashop.goods goods = new com.enation.javashop.goods();
goods.setbrandid(819);
goods.setcategoryid(109);
goods.setcost(1.01);
goods.setgoodsid(970);
goods.setgoodsname("random_str748");
goods.setgoodstransfeecharge(164);
goods.sethavespec(506);
goods.setintro("random_str344");
goods.setmarketenable(878);
goods.setmktprice(1.01);
goods.setprice(1.01);
goods.setsn("random_str316");
goods.setweight(1.01);

  

工具类代码:

package com.enation.app.javashop.saas;

import com.enation.app.javashop.framework.util.stringutil;
import org.springframework.beans.beanutils;

import java.beans.propertydescriptor;

/**
 * 模拟数据生成器
 * @author kingapex
 * @version 1.0
 * @since 7.1.0
 * 2019-08-06
 */

public class mockdatagenerator {

    public static string create(class clz) {

        stringbuffer mockstr = new stringbuffer();

        propertydescriptor[] propertydescriptors = beanutils.getpropertydescriptors(clz);
        string objname = clz.getsimplename();
        char[] chars =objname.tochararray();
        chars[0]+=32;
        objname = string.valueof(chars);
        mockstr.append(clz.getname() + " "+ objname+" = new "+ clz.getname()  +"();\n");
        for (propertydescriptor descriptor : propertydescriptors) {
            if (descriptor.getwritemethod() != null) {

                string name = descriptor.getwritemethod().getname();
                string value = createvalue( descriptor.getpropertytype());
                mockstr.append(objname + "." + name + "(" + value + ");\n");

            }

        }

         return mockstr.tostring();
    }

    private static string createvalue( class clz) {

        if (clz.equals(java.lang.integer.class)) {
            return stringutil.getrandstr(3);
        }

        if (clz.equals(java.lang.double.class)) {
            return "1.01";
        }

        if (clz.equals(java.lang.string.class)) {
            return "\"random_str"+ stringutil.getrandstr(3)+"\"";
        }

        return "";
    }

}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网