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

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

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