代码生成器是干什么用的,谁用过

这个算是一个插件吗,比如说我用的是VS2010,他直接就可以用吗?还是单独的?

代码生成器是按照特定编码规范输出代码的软件,可以直接生成项目,也可以单页生成

比如动软,生成项目可以选择vs版本的,其实嘛,动软挺垃圾的,不如你去学学orm框架,很简单的,比动软的三层好得多追问

那还是自己敲代码比较好?

追答

也不是吧,自己敲的可能注意不到一些安全,规范这些的,生成的代码可能这方面好些吧,只是生成器的话,你数据库加了字段,就改的麻烦了,基本都会自己改一些

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-21
package utils;

import pojo.Page;
import pojo.UIElement;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

import static utils.XmlUtils.loadXml;

public class GenerateJave {
public static ArrayList<Page> pages;
static {
pages = loadXml("C:\\workspace\\CommonSubject\\src\\test\\resources\\UILibrary.xml");
}

public static String getPageWantPageVar(String wantPageKeyWord){
for (Page p: pages) {
if (p.getKeyword().contains(wantPageKeyWord)){
return captureName(p.getVar());
}
}
return null;
}

public static String getPageWantPageKeyWord(String wantPageKeyWord){
for (Page p: pages) {
if (p.getKeyword().contains(wantPageKeyWord)){
return p.getKeyword();
}
}
return null;
}

public static String getEleWantDes(String wantPageKeyWord,String eleWantPageKeyWord){
for (Page p: pages) {
if (p.getKeyword().contains(wantPageKeyWord)){
List<UIElement> uiElementList = p.getUiElementList();
for (UIElement u:uiElementList) {
if (u.getKeyword().contains(eleWantPageKeyWord)){
return u.getDes();
}

}
}
}
return null;
}

public static String getEleWantVar(String wantPageKeyWord,String eleWantPageKeyWord){
for (Page p: pages) {
if (p.getKeyword().contains(wantPageKeyWord)){
List<UIElement> uiElementList = p.getUiElementList();
for (UIElement u:uiElementList) {
if (u.getKeyword().contains(eleWantPageKeyWord)){
return captureName(u.getVar());
}

}
}
}
return null;
}

public static String getEleKeyword(String wantPageKeyWord,String eleWantPageKeyWord){
for (Page p: pages) {
if (p.getKeyword().contains(wantPageKeyWord)){
List<UIElement> uiElementList = p.getUiElementList();
for (UIElement u:uiElementList) {
if (u.getKeyword().contains(eleWantPageKeyWord)){
return u.getKeyword();
}

}
}
}
return null;
}

public static String getEleWantUIElement(String wantPageKeyWord,String eleWantPageKeyWord){
for (Page p: pages) {
if (p.getKeyword().contains(wantPageKeyWord)){
List<UIElement> uiElementList = p.getUiElementList();
for (UIElement u:uiElementList) {
if (u.getKeyword().contains(eleWantPageKeyWord)){
return u.toString();
}

}
}
}
return null;
}

/**
* 将字符串的首字母转大写
* @param str 需要转换的字符串
* @return
*/
private static String captureName(String str) {
// 进行字母的ascii编码前移,效率要高于截取字符串进行转换的操作
char[] cs=str.toCharArray();
cs[0]-=32;
return String.valueOf(cs);
}

public static void write1(String fileName,String content,String wantPageKeyWord,String eleWantPageKeyWord) {

String projectDir= (System.getProperty("user.dir")+"\\src\\test\\java\\po\\"+fileName+".java");
File file = new File(projectDir);

String content1 = "package po;\n" +
"\n" +
"import org.openqa.selenium.By;\n" +
"\n" +
"import common.BasePage;\n"
+"import utils.GenerateJave;\n"+
"import java.io.File;\n"+
"import org.testng.Assert;";
String contentPageDes = "\n/**\n" +
" * " +getPageWantPageKeyWord(wantPageKeyWord) +"\n" +
" */\n";
String content2 = "class "+getPageWantPageVar(wantPageKeyWord)+" extends BasePage {\n";

String contenteEd = "\n}";

String method = "";
if(getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("输入")){
method = "\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void modifyValueByJs"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"(String value) {\n" +
"\t\tinput(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\", \""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\",value);\n" +
"\t}\n";
}else if (getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("点击按钮 ")){
method = "\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void click"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"() {\n" +
"\t\tclick(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\", \""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t}\n";
}else if (getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("断言")){
method ="\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void assertEleFor"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"(){\n" +
"\t\tassertEleContainsText(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\",\"\");\n" +
"\t\tassertInfoCountBigDengYuOne(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\tassertInfoCountBigOne(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\tassertInfoCountOne(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\n}";
}else if (getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("点击按钮|验证下载")){
method = "\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void assertDownloadFor"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"(){\n" +
"\t\tlong beforeFilesNum = GenerateJave.getList(new File(\"C:\\\\workspace\\\\CommonSubject\\\\src\\\\test\\\\resources\"));\n" +
"\t\tclick(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\twaitTime(3000);\n" +
"\t\tlong afterFilesNum = GenerateJave.getList(new File(\"C:\\\\workspace\\\\CommonSubject\\\\src\\\\test\\\\resources\"));\n" +
"\t\tswitchWindowByTitle(\"企业信息管理\");\n" +
"\t\tString result = (afterFilesNum - beforeFilesNum) + \"\";\n" +
"\t\tAssert.assertEquals(\"1\",result);\n" +
"\t}";
}
try (FileOutputStream fop = new FileOutputStream(file)) {

// if file doesn't exists, then create it
if (!file.exists()&& !file.isDirectory()) {
file.createNewFile();
}

// get the content in bytes
byte[] contentInBytePageDes = contentPageDes.getBytes();
byte[] contentInByteMethod = method.getBytes();

byte[] contentInByte1 = content1.getBytes();
byte[] contentInByte2 = content2.getBytes();
byte[] contentInByteEnd = contenteEd.getBytes();

// byte[] contentInBytes = content.getBytes();
fop.write(contentInByte1);
fop.write(contentInBytePageDes);
fop.write(contentInByte2);
// fop.write(contentInByte1);
fop.write(contentInByteMethod);
fop.write(contentInByteEnd);

// fop.write(contentInBytes);
fop.flush();
fop.close();

System.out.println("Done");

} catch (Exception e) {
e.printStackTrace();
}
}

public static void write(String fileName,String content,String wantPageKeyWord,String eleWantPageKeyWord) {

String projectDir= (System.getProperty("user.dir")+"\\src\\test\\java\\po\\"+fileName+".java");
File file = new File(projectDir);

String content1 = "package po;\n" +
"\n" +
"import org.openqa.selenium.By;\n" +
"\n" +
"import common.BasePage;\n"
+"import utils.GenerateJave;\n"+
"import java.io.File;\n"+
"import org.testng.Assert;";
String contentPageDes = "\n/**\n" +
" * " +getPageWantPageKeyWord(wantPageKeyWord) +"\n" +
" */\n";
String content2 = "class "+getPageWantPageVar(wantPageKeyWord)+" extends BasePage {\n";

String contenteEd = "\n}";

String method = "";
if(getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("输入")){
method = "\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void modifyValueByJs"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"(String value) {\n" +
"\t\tinput(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\", \""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\",value);\n" +
"\t}\n";
}else if (getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("点击按钮 ")){
method = "\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void click"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"() {\n" +
"\t\tclick(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\", \""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t}\n";
}else if (getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("断言")){
method ="\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void assertEleFor"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"(){\n" +
"\t\tassertEleContainsText(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\",\"\");\n" +
"\t\tassertInfoCountBigDengYuOne(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\tassertInfoCountBigOne(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\tassertInfoCountOne(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword(wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\n}";
}else if (getEleWantDes( wantPageKeyWord,eleWantPageKeyWord).contains("点击按钮|验证下载")){
method = "\n\t/**\n" +
"\t * \t\t"+getEleWantDes( wantPageKeyWord,eleWantPageKeyWord)+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t * \t\t"+getEleWantUIElement(wantPageKeyWord,eleWantPageKeyWord)+"\n" +
"\t */\n" +
"\tpublic void assertDownloadFor"+getEleWantVar(wantPageKeyWord,eleWantPageKeyWord)+"(){\n" +
"\t\tlong beforeFilesNum = GenerateJave.getList(new File(\"C:\\\\workspace\\\\CommonSubject\\\\src\\\\test\\\\resources\"));\n" +
"\t\tclick(\""+getPageWantPageKeyWord(wantPageKeyWord)+"\",\""+getEleKeyword( wantPageKeyWord,eleWantPageKeyWord)+"\");\n" +
"\t\twaitTime(3000);\n" +
"\t\tlong afterFilesNum = GenerateJave.getList(new File(\"C:\\\\workspace\\\\CommonSubject\\\\src\\\\test\\\\resources\"));\n" +
"\t\tswitchWindowByTitle(\"企业信息管理\");\n" +
"\t\tString result = (afterFilesNum - beforeFilesNum) + \"\";\n" +
"\t\tAssert.assertEquals(\"1\",result);\n" +
"\t}";
}
try (FileOutputStream fop = new FileOutputStream(file)) {

// if file doesn't exists, then create it
if (!file.exists()&& !file.isDirectory()) {
file.createNewFile();
}

// get the content in bytes
byte[] contentInBytePageDes = contentPageDes.getBytes();
byte[] contentInByteMethod = method.getBytes();

byte[] contentInByte1 = content1.getBytes();
byte[] contentInByte2 = content2.getBytes();
byte[] contentInByteEnd = contenteEd.getBytes();

// byte[] contentInBytes = content.getBytes();
fop.write(contentInByte1);
fop.write(contentInBytePageDes);
fop.write(contentInByte2);
// fop.write(contentInByte1);
fop.write(contentInByteMethod);
fop.write(contentInByteEnd);

// fop.write(contentInBytes);
fop.flush();
fop.close();

System.out.println("Done");

} catch (Exception e) {
e.printStackTrace();
}
}

// public static void main(String[] args) {
//// write("11","","保险页","历史账查单查询页-保单号输入框");
//// write("11","","保险页","历史账查单查询页-查询按钮");
// write("11","","保险页","历史账查单查询页-结算详情页-汇总税费明细链接");
//
// String projectDir= (System.getProperty("user.dir")+"\\po\\"+"11"+".java");
// System.out.println(projectDir);
// }

public static void createFile(String fileName){
String projectDir= (System.getProperty("user.dir")+"\\src\\test\\java\\po\\"+fileName+".java");
File file = new File(projectDir);
//
//
// String content1 = "package po;\n" +
// "\n" +
// "import org.openqa.selenium.By;\n" +
// "\n" +
// "import common.BasePage;\n"
// +"import utils.GenerateJave;\n"+
// "import java.io.File;\n"+
// "import org.testng.Assert;";

try (FileOutputStream fop = new FileOutputStream(file)) {

if (!file.exists()&& !file.isDirectory()) {
file.createNewFile();
}
// byte[] contentInByte1 = content1.getBytes();
// fop.write(contentInByte1);
// fop.flush();
// fop.close();
// System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
}

public static void writeMethod(String wantPageKey){
String pageVar = null;
for (Page p :pages) {
if (p.getKeyword().contains(wantPageKey)){
/**
* 页面关键字页面描述
*/
String pageKey = p.getKeyword();
/**
* 页面变量
*/
pageVar = p.getVar();
createFile(pageKey+"Page");
String head = "package po;\n" +
"\n" +
"import org.openqa.selenium.By;\n" +
"\n" +
"import common.BasePage;\n"
+"import utils.GenerateJave;\n"+
"import java.io.File;\n"+
"import org.testng.Assert;";
appendMethod(pageVar+"Page",head);

String method = "";
String contentClass = "\n/**\n" +
" * " +pageKey +"\n" +
" */\n"+"class "+getPageWantPageVar(pageKey)+" extends BasePage {\n";
appendMethod(pageVar+"Page",contentClass);
List<UIElement> uiElementList = p.getUiElementList();
for (UIElement u:uiElementList) {
/**
* 元素描述
*/
String eleWantDes = getEleWantDes(pageKey, u.getKeyword());
/**
* 元素信息
*/
String eleWantUIElement = getEleWantUIElement(pageKey, u.getKeyword());
/**
* 元素变量
*/
String eleWantVar = getEleWantVar(pageKey, u.getKeyword());
/**
* 元素关键字
*/
String eleKeyword = getEleKeyword(pageKey, u.getKeyword());
if(eleWantDes.contains("输入")){
method = "\n\t/**\n" +
"\t * \t\t"+eleWantDes+eleKeyword+"\n" +
"\t * \t\t"+eleWantUIElement+"\n" +
"\t */\n" +
"\tpublic void modifyValueByJs"+eleWantVar+"(String value) {\n" +
"\t\tinput(\""+pageKey+"\", \""+eleKeyword+"\",value);\n" +
"\t}\n";
}else if (eleWantDes.contains("点击按钮 ")){
method = "\n\t/**\n" +
"\t * \t\t"+eleWantDes+eleKeyword+"\n" +
"\t * \t\t"+eleWantUIElement+"\n" +
"\t */\n" +
"\tpublic void click"+eleWantVar+"() {\n" +
"\t\tclick(\""+pageKey+"\", \""+eleKeyword+"\");\n" +
"\t}\n";
}else if (eleWantDes.contains("断言")){
method ="\n\t/**\n" +
"\t * \t\t"+eleWantDes+eleKeyword+"\n" +
"\t * \t\t"+eleWantUIElement+"\n" +
"\t */\n" +
"\tpublic void assertEleFor"+eleWantVar+"(){\n" +
"\t\tassertEleContainsText(\""+pageKey+"\",\""+eleKeyword+"\",\"\");\n" +
"\t\tassertInfoCountBigDengYuOne(\""+pageKey+"\",\""+eleKeyword+"\");\n" +
"\t\tassertInfoCountBigOne(\""+pageKey+"\",\""+eleKeyword+"\");\n" +
"\t\tassertInfoCountOne(\""+pageKey+"\",\""+eleKeyword+"\");\n" +
"\t\n}";
}else if (eleWantDes.contains("点击按钮|验证下载")){
method = "\n\t/**\n" +
"\t * \t\t"+eleWantDes+eleKeyword+"\n" +
"\t * \t\t"+eleWantUIElement+"\n" +
"\t */\n" +
"\tpublic void assertDownloadFor"+eleWantVar+"(){\n" +
"\t\tlong beforeFilesNum = GenerateJave.getList(new File(\"C:\\\\workspace\\\\CommonSubject\\\\src\\\\test\\\\resources\"));\n" +
"\t\tclick(\""+pageKey+"\",\""+eleKeyword+"\");\n" +
"\t\twaitTime(3000);\n" +
"\t\tlong afterFilesNum = GenerateJave.getList(new File(\"C:\\\\workspace\\\\CommonSubject\\\\src\\\\test\\\\resources\"));\n" +
"\t\tswitchWindowByTitle(\"企业信息管理\");\n" +
"\t\tString result = (afterFilesNum - beforeFilesNum) + \"\";\n" +
"\t\tAssert.assertEquals(\"1\",result);\n" +
"\t}";
}
appendMethod(pageVar+"Page",method);
}
}
}
appendMethod( pageVar+"Page","\n}");
}

public static void main(String[] args) {
writeMethod("保险页");

}

/**
* 获取文件个数
* @param f
* @return
*/
public static long getList(File f) {
long size = 0;
File[] files = f.listFiles();
size = files.length;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
size = size + getList(files[i]);
}
}
return size;
}
/**
????* B方法追加文件:使用FileWriter
????*/
public static void appendMethod(String fileName, String content) {
String projectDir= (System.getProperty("user.dir")+"\\src\\test\\java\\po\\"+fileName+".java");

BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(projectDir, true)));
out.write(content);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
第2个回答  2012-07-30
就是帮你生成一些可以快捷的代码,比如生成增删改查的方法:自己再到里面去改些参数。
第3个回答  2012-07-30
代码生成器就是帮你生成代码,省去你的好多时间,比如(Models,数据库的一般操作)
第4个回答  2012-07-30
生成代码的?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网