提交 2018ee1c authored 作者: mry's avatar mry

perf(base): 将返回值由二维数组改为迭代器

上级 37339e89
package org.matrix.testNg;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
* @author mry
*/
public class DataProviderForDb {
public class DataProviderForDb implements Iterator<Object[]> {
static Connection connection;
static ResultSet resultSet;
static Statement statement;
ResultSet resultSet;
ResultSetMetaData resultSetMetaData;
public static Object[][] getDb(String ip, String port, String baseName,
String userName, String password, String sql) {
List<Object[]> list = new ArrayList<>();
String url = String.format("jdbc:mysql://%s:%s/%s", ip, port, baseName);
public DataProviderForDb(String ip, String port, String baseName,
String userName, String password, String sql) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection(url, userName, password);
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
//声明存放泛型string数组的list对象
int colNum = resultSet.getMetaData().getColumnCount();
while (resultSet.next()) {
String[] strings = new String[colNum];
for (int i = 0; i < strings.length; i++) {
strings[i] = resultSet.getString(i + 1);
}
list.add(strings);
}
String url = String.format("jdbc:mysql://%s:%s/%s", ip, port, baseName);
Connection conn = DriverManager.getConnection(url, userName, password);
Statement createStatement = conn.createStatement();
resultSet = createStatement.executeQuery(sql);
resultSetMetaData = resultSet.getMetaData();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
remove();
}
//将list对象转换成二维数组
Object[][] results = new Object[list.size()][];
for (int i = 0; i < list.size(); i++) {
results[i] = list.get(i);
}
return results;
}
public static void remove() {
@Override
public boolean hasNext() {
boolean flag = false;
try {
if (resultSet != null) {
resultSet.close();
}
flag = resultSet.next();
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
}
@Override
public Object[] next() {
@SuppressWarnings(value = "all")
Map<String, String> data = new HashMap<>();
try {
if (statement != null) {
statement.close();
for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
data.put(resultSetMetaData.getColumnName(i), resultSet.getString(i));
}
} catch (SQLException e) {
e.printStackTrace();
}
Object[] objects = new Object[1];
objects[0] = data;
return objects;
}
@Override
public void remove() {
try {
if (connection != null) {
connection.close();
}
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
......
......@@ -3,34 +3,35 @@ package org.matrix.testNg;
import org.testng.ITestResult;
import org.testng.annotations.*;
import java.util.Iterator;
import java.util.Map;
/**
* @author mry
*/
public class TestPigeon {
String sql;
String env;
Integer envId;
@Parameters({"sql", "env"})
@Parameters({"sql", "envId"})
@BeforeClass
public void beforeClass(String sql, String env) {
public void beforeClass(String sql, Integer envId) {
this.sql = sql;
this.env = env;
this.envId = envId;
}
/**
* XML中的SQL决定了执行什么用例, 执行多少条用例, SQL的搜索结果为需要测试的测试用例
*
* @DataProvider 返回值二维数组
*/
@DataProvider(name = "testData")
private Object[][] getData() {
return DataProviderForDb.getDb(TestConfig.DB_IP, TestConfig.DB_PORT,
private Iterator<Object[]> getData() {
return new DataProviderForDb(TestConfig.DB_IP, TestConfig.DB_PORT,
TestConfig.DB_BASE_NAME, TestConfig.DB_USERNAME, TestConfig.DB_PASSWORD, sql);
}
@Test(dataProvider = "testData")
public void test() {
public void test(Map<String, String> data) {
}
......
......@@ -127,7 +127,7 @@ public class ExtentTestNgReporterListener implements IReporter {
ExtentTest test;
if (tests.size() > 0) {
//调整用例排序,按时间排序
Set<ITestResult> treeSet = new TreeSet<ITestResult>((o1, o2) -> o1.getStartMillis() < o2.getStartMillis() ? -1 : 1);
Set<ITestResult> treeSet = new TreeSet<>((o1, o2) -> o1.getStartMillis() < o2.getStartMillis() ? -1 : 1);
treeSet.addAll(tests.getAllResults());
for (ITestResult result : treeSet) {
Object[] parameters = result.getParameters();
......
......@@ -22,7 +22,7 @@ import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/actions")
@Api(tags = "对动作action的基本操作")
@Api(tags = "对动作action的基本操作")
public class ActionController {
private final ActionService actionService;
......
......@@ -22,7 +22,7 @@ import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/connects")
@Api(tags = "对连接池connect的基本操作")
@Api(tags = "对连接池connect的基本操作")
public class ConnectController {
private final ConnectService connectService;
......
......@@ -22,7 +22,7 @@ import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/environments")
@Api(tags = "对环境environment的基本操作")
@Api(tags = "对环境environment的基本操作")
public class EnvironmentController {
private final EnvironmentService environmentService;
......
......@@ -22,7 +22,7 @@ import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/moves")
@Api(tags = "对行为move的基本操作")
@Api(tags = "对行为move的基本操作")
public class MoveController {
private final MoveService moveService;
......
......@@ -22,7 +22,7 @@ import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/projects")
@Api(tags = "对项目project的基本操作")
@Api(tags = "对项目project的基本操作")
public class ProjectController {
private final ProjectService projectService;
......
......@@ -8,7 +8,9 @@ import org.matrix.autotest.utils.CommonResult;
import org.matrix.autotest.utils.CommonResultObj;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.testng.TestNG;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -22,7 +24,7 @@ import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/testCases")
@Api(tags = "对用例test_case的基本操作")
@Api(tags = "对用例test_case的基本操作")
public class TestCaseController {
private final TestCaseService testCaseService;
......@@ -132,5 +134,21 @@ public class TestCaseController {
}
}
/**
* 执行测试用例
*
* @param name 用例名称
* @return 是否执行成功
*/
@ApiOperation(value = "执行测试用例")
@GetMapping("/start/{name}")
public void start(@PathVariable String name) {
List<String> suites = new ArrayList<String>();
suites.add("kt-script\\src\\main\\java\\org\\matrix\\" + name);
TestNG testNG = new TestNG();
testNG.setTestSuites(suites);
testNG.run();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论