为测试框架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数据格式,然后 ...
随机推荐
- SQL top order between 一起使用
select * from emp;
- CentOs5.2中PHP的升级
最近一个项目中需要使用到PHP5.2的版本,而服务器上使用了官方的yum源进行安装,默认的版本是5.1.6,需要升级.但是因为不是一个非常 正式的服务器环境,所以想通过简单的yum update一下了 ...
- Thread create 创建进程
#include "windows.h" #include "iostream" #include "stdio.h" void Start ...
- paper 36 :[教程] 基于GridSearch的svm参数寻优
尊重原创~~~ 转载出处:http://www.matlabsky.com/thread-12411-1-1.html 交叉验证(Cross Validation)方法思想简介http://www.m ...
- angular ng-href
farmApp.config([ '$compileProvider', function( $compileProvider ) { $compileProvider.aHrefSanitizati ...
- mysql设置时区方法
set global time_zone = '+2:00'; ##修改mysql全局时区 set time_zone = '+2:00'; ##修改当前会话时区 flush privileges; ...
- springmvc+spring+mybatis分页查询实例版本1,ver1.0
无聊做做看看,几乎没有怎么仔细做过这方面的,总是以为很简单,想想就会,实际做起来结合工作经验感觉还是挺有收获的,可以用在自己的项目上 第一版本思路:框架使用ssm,这个无所谓,采用分页语句查询指定页面 ...
- [OrangePi] Backup internal EMMC to SD Card
Boot your Orange PI board from EMMC without SD Card inserted login insert your SD Card Run: sudo ins ...
- [php/html/CSS]给Aptana3 安装 Emmet插件
aptana studio3 安装 zencoding(Emmet) 插件 zen coding 更名为Emmet emmet 谷歌主页地址:http://code.google.com/p/zen- ...
- SEO之链接农场、内容农场、微信内容农场
SEO之链接农场.内容农场.微信内容农场 一.“内容农场”的上市之路http://www.neweekly.com.cn/newsview.php?id=3330里斯2006年的第二次创业仍旧延续了上 ...