为测试框架model类自动生成xml结果集
问题:有大量类似于theProductId这样名字的字符串需要转换成the_product_id这种数据库column名的形式。
思路:见到(见)大写字母(缝)就插入(插)一个“_”字符(针)进去,最后把所有字母都转换为小写。
解决办法:递归,字符串操作——见缝插针。
方法如下:
public static String toDbFormat(String theString, String insertString, int i) {
StringBuilder sb = new StringBuilder(theString);
String result = theString;
if (i < sb.length()) {
if (Character.isUpperCase(sb.charAt(i))) {
sb.insert(i, insertString);
i = i + 2;
} else {
i++;
}
result = toDbFormat(sb.toString(), insertString, i);
}
return result.toLowerCase();
}
实际应用——在接口自动化测试框架中根据model类为mybatis文件夹中的xml文件自动生成result部分:
public static void createXmlOut(Object object) throws IOException{
//生成mybatis文件夹中xml文件的result部分
FileWriter writer= new FileWriter("D:\\xmlOut.txt");
@SuppressWarnings("rawtypes")
Class clz = object.getClass();
for (java.lang.reflect.Field field : clz.getDeclaredFields()) {
String target = "<result property=\""+field.getName()+"\" column=\""+toDbFormat(field.getName(), "_", 0)+"\" />";
writer.append(target+"\r\n");
}
writer.flush();
writer.close();
}
测试方法(这里SomeModel替换为测试框架中实际的model类):
public static void main(String[] args) throws IOException {
SomeModel someModel = new SomeModel();
createXmlOut(someModel);
}
执行测试方法后就可以在你的D盘xmlOut.txt文件中看到生成的结果了。完整测试代码如下:
package com.netease.lede.qa.util; import java.io.FileWriter;
import java.io.IOException; import com.netease.lede.qa.model.duobao.TbDuobaoCoinDetail; public class CreateResultXMLUtil {
public static String toDbFormat(String theString, String insertString, int i) {
// 将变量名转成数据库列名形式
StringBuilder sb = new StringBuilder(theString);
String result = theString;
if (i < sb.length()) {
if (Character.isUpperCase(sb.charAt(i))) {
sb.insert(i, insertString);
i = i + 2;
} else {
i++;
}
result = toDbFormat(sb.toString(), insertString, i);
}
return result.toLowerCase();
} public static void createXmlOut(Object object) throws IOException {
// 生成mybatis文件夹中xml文件的result部分
FileWriter writer = new FileWriter("D:\\xmlOut.txt");
@SuppressWarnings("rawtypes")
Class clz = object.getClass();
for (java.lang.reflect.Field field : clz.getDeclaredFields()) {
String target = "<result property=\"" + field.getName() + "\" column=\""
+ toDbFormat(field.getName(), "_", 0) + "\" />";
TylanStringUtil.log(target);
writer.append(target + "\r\n");
}
writer.flush();
writer.close();
} public static void main(String[] args) throws IOException {
TbDuobaoCoinDetail tbDuobaoCoinDetail = new TbDuobaoCoinDetail();
createXmlOut(tbDuobaoCoinDetail);
}
}
为测试框架model类自动生成xml结果集的更多相关文章
- 让Visual Studio 2013为你自动生成XML反序列化的类
Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: 1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签,让开发人员可以对所编辑文档的修改.查找.定位情 ...
- 自动生成XML反序列化的类
原文地址:http://www.cnblogs.com/jaxu/p/3632077.html Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: ...
- Mybatis自动生成xml文件、dao接口、实体类
Mybatis可以通过逆向工程,实现自动生成xml文件.dao接口.实体类 以下使用的是Intellij Idea进行自动生成 一.首先,要在pom.xml中导入插件,在<build>中加 ...
- Hibernate由model类自动同步数据库表结构
在开发中遇到了个问题,每次测试数据库增加表结构的时候,本地pull下最新代码导致启动报错,上网搜了快速解决办法---->hibernate 配置属性中,hibernate.hbm2ddl.aut ...
- java 编程基础:注解(Annotation Processing Tool)注解处理器 利用注解解读类属性生成XML文件
APT的介绍: APT(Annotation Processing Tool)是一种注解处理工具,它对源代码文件进行检测,并找出源文件所包含的注解信息,然后针对注解信息进行额外的处理. 使用APT工具 ...
- laravel5.1框架model类查询实现
laravel框架model类查询实现: User::where(['uid'=8])->get(); User类继承自Model类:Illuminate\Database\Eloquent\M ...
- eclipse类自动生成注释
1.创建新类时自动生成注释 window->preference->java->code styple->code template 当你选择到这部的时候就会看 ...
- 微信被动回复用户消息-文本消息-springmvc环境下自动生成xml
微信被动回复用户消息-文本消息-springmvc环境下自动生成xml springmvc - 大牛! private Object subscribeMessage(Scan scan) { Sca ...
- 如何由XSD自动生成XML和实体类
项目中有时候要用XML作为数据源,因此需要定义XML文件和相应的类,最佳方法是首先定义XSD,然后自动生成实体类,最后生成XML和填充数据:读取XML数据源的时候,首先用XSD验证XML数据格式,然后 ...
随机推荐
- Python学习总结14:时间模块datetime & time & calendar (一)
Python中的常用于处理时间主要有3个模块datetime模块.time模块和calendar模块. 一.time模块 1. 在Python中表示时间的方式 1)时间戳(timestamp):通常来 ...
- android复习第一天-----简单的android常识
前言:要去面试了,这些天花一些事件把android中简单的知识点来串联的复习一下 1,android中的工程结构 src文件夹:存储android文件的源代码 gen文件夹:有工具自动生成,不要去修改 ...
- MVC权限管理系统dwpro项目分配按钮没有显示的问题
问题如下: 修改如下: 或者(原因为这个两个地方名要一致,大小写也要注意): 效果图:
- 夺命雷公狗---DEDECMS----10dedecms双标签
双标签基本语法如下: {dede:标签名 参数名=“值” 参数名2=“值”...} 内容...... {/dede} 我们先来查看下手册,如下所示: 我们先来用一个channel的标签来做实例,因为c ...
- 夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)
如果用户在微信客户端访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,从而实现业务逻辑. 一般我们用来“数据采集”,“市场调查”,“投票”,只要授权了第三方网页,微信用户无需注册就可 ...
- ios学习笔记(二)第一个应用程序--Hello World
原文地址:http://blog.csdn.net/shangyuan21/article/details/18416537 上一篇文章,Windows7上使用VMWare搭建iPhone开发环境介绍 ...
- php防sql注入
[一.在服务器端配置] 安全,PHP代码编写是一方面,PHP的配置更是非常关键. 我 们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们 ...
- hadoop之输入输出格式
<STRONG>jobConf.setInputFormat(MyInputFormat. class ); InputFormat:</STRONG> TextInputFo ...
- C#中Attribute的继承
在C#中Attribute是个非常有用的语法,本文不会介绍Attribute的使用方法,如果想了解Attribute的详细信息请查阅MSDN及网上相关文档.C#中的Attribute有两个地方是和继承 ...
- SQL SERVER2012秘钥
来自网络: MICROSOFT SQL SERVER 2012 DEVELOPER 版(开发版)序列号:YQWTX-G8T4R-QW4XX-BVH62-GP68YMICROSOFT SQL SERVE ...