一、MySQL數據庫測試數據準備
-- 創建數據庫
CREATE DATABASE test;
-- 使用該數據庫
use test;
-- 創建data_provider表,供測試使用
CREATE TABLE data_provider (
username VARCHAR (20),
userpasswd VARCHAR (20),
playgame VARCHAR (20)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
-- 在表中插入數據
INSERT INTO data_provider(username,userpasswd,playgame) VALUES('張三','123456','王者榮耀');
INSERT INTO data_provider(username,userpasswd,playgame) VALUES('李四','654321','絕地戰場');
INSERT INTO data_provider(username,userpasswd,playgame) VALUES('王五','987654','穿越火線');
二、MySQL數據庫連接依賴準備
maven添加依賴jar包
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
三、練習代碼如下:
package com.chenfeng.Demo;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class jdbc {
@DataProvider(name = "testData")
public static Object[][] toBeDataProvider() throws SQLException, ClassNotFoundException {
return getTestData("data_provider");
}
@Test(dataProvider = "testData")
public void f(String s1, String s2, String s3) {
System.out.println(s1 + ":" + s2 + ":" + s3);
}
public static Object[][] getTestData(String tableName) throws ClassNotFoundException, SQLException {
//設置mysql驅動
Class.forName("com.mysql.jdbc.Driver");
//建立數據庫的連接
Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.235.133:3306/test", "root", "123456");
//判斷數據連接是否成功
if (!conn.isClosed()) {
System.out.println(tableName + "連接成功");
} else {
System.out.println(tableName + "連接失敗");
}
//創建Statement對象可以用對應的方法executeQuery(sql語句)獲取測試數據
Statement statement = conn.createStatement();
//創建一個結果集存放數據庫執行完sql的數據
ResultSet resultSet = statement.executeQuery("select * from " + tableName);
//聲明存放泛型string數組的list對象
List<Object[]> list = new ArrayList<Object[]>();
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);
}
resultSet.close();
conn.close();
//將list對象轉換成二位數組
Object[][] results = new Object[list.size()][];
for (int i = 0; i < list.size(); i++) {
results[i] = list.get(i);
}
return results;
}
}
返回結果:
data_provider連接成功
張三:123456:王者榮耀
李四:654321:絕地戰場
王五:987654:穿越火線