使用jUnit和JDBC来读取数据库中的数据

       测试是相当重复的工作,不仅因为我们要一次又一次运行相同的测试。 例如,我们可能运行同一个测试需要有不同的输入或者测试条件,然后验证相应出的输出结果 。每一个测试 都有相同的步骤,仅是测试数据不而已。本例中使用jdbc来连接MySQL数据库,在项目中导入mysql-connector-java-5.1.26-bin.jar。MySQL图形界面数据如下图:


如何实现:

package com.shareku.util;

import static org.junit.Assert.assertEquals;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;


@RunWith(value = Parameterized.class)
public class MySqlData2 {

	private WebDriver driver;
	private String height;
	private String weight;
	private String bmi;
	
	//数据库地址
	private static String dbUrl="jdbc:mysql://localhost:3306/db_bmi";
	//用户名
	private static String dbUserName="root";
	//密码
	private static String dbPassword="123456";
	//驱动名称
	private static String jdbcName="com.mysql.jdbc.Driver";
	
	//参数化
	@Parameters
	public static Collection<String[]> testData() throws SQLException {
		List<String[]> records =new ArrayList<String[]>();
		//连接数据库
		try {
			Class.forName(jdbcName);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		Connection con = DriverManager.getConnection(dbUrl,dbUserName,dbPassword);
		Statement st = con.createStatement();
		ResultSet rs = st.executeQuery("select height,weight,bmi from t_bmi2");//sql
		//取得结果集结构
		ResultSetMetaData rsMetaData = rs.getMetaData();
		int cols = rsMetaData.getColumnCount();//取得列数
		while(rs.next()){
			String fields[] = new String[cols];
			int col = 0;
			for(int colIdx=1;colIdx<=cols;colIdx++) {
				fields[col] = rs.getString(colIdx);
				col++;
			}
			records.add(fields);
		}
		rs.close();
		st.close();
		con.close();
		return records;
	}
	
	//构造函数赋值
	public MySqlData2(String height,String weight,String bmi) {
		this.height = height;
		this.weight = weight;
		this.bmi = bmi;
	}
	
	@Before
	public void setUp() {
		driver = new FirefoxDriver();
		driver.get("http://cn.onlinebmicalculator.com/");
		driver.manage().window().maximize();
	}
	
	@Test
	public void testBMICalcultaor() throws Exception {
		//输入身高
		WebElement heightField =driver.findElement(By.name("f_height"));
		heightField.clear();
		heightField.sendKeys(height);
		//输入体重
		WebElement weightField =driver.findElement(By.name("f_weight"));
		weightField.clear();
		weightField.sendKeys(weight);
		//点击计算
		WebElement calculateButton =driver.findElement(By.name("f_submit"));
		calculateButton.click();
		//等待页面加载
		Thread.sleep(3000);
		//验证计算后的BMI值
		WebElement bmiLabel=driver.findElement(By.xpath("//span[starts-with(@class,'bmi_val')]"));
		assertEquals(bmi, bmiLabel.getText());
	}
	
	@After
	public void tearDown() {
		driver.close();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值