java junit 启动参数_Java JUnit 调用Excel表中数据 参数化测试 JUnit4 | 学步园

第一步:Excel数据表

共3列20行数据,其中第3列是第1列和第2列的和。

第3行和第20行会测试会报错。

1

1

2

2

2

4

3

3

5

4

4

8

5

5

10

6

6

12

7

7

14

8

8

16

9

9

18

10

10

20

11

11

22

12

12

24

13

13

26

14

14

28

15

15

30

16

16

32

17

17

34

18

18

36

19

19

38

20

20

41

第二步:被测试程序

package com.lance;

public class Target{

public double add(double num1 , double num2){

return num1 + num2 ;

}

}

第三步:测试程序

package com.lance;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Collection;

import junit.framework.TestCase;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.junit.runners.Parameterized;

import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)

public class TargetTestPara extends TestCase{

private double num1;

private double num2;

private double expResult;

@Parameters

public static Collection spreadsheetData() throws IOException {

InputStream excelFile = new FileInputStream("src/data/TestData.xls");

return new DataExtractTool(excelFile).getData();

}

public TargetTestPara(double column1, double column2, double column3) {

super();

this.num1 = column1;

this.num2 = column2;

this.expResult = column3;

}

@Test

public void testAdd(){

Target calculator = new Target();

double result = calculator.add(num1, num2);

assertEquals(expResult, result);

}

}

第四步:读取Excel表数据的类

此处用到poi包:poi-3.7-20101029

package com.lance;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.Collection;

import java.util.Date;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.CellValue;

import org.apache.poi.ss.usermodel.DateUtil;

import org.apache.poi.ss.usermodel.FormulaEvaluator;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

public class DataExtractTool {

private transient Collection data = null;

public DataExtractTool(final InputStream excelFile) throws IOException {

this.data = extractData(excelFile);

}

public Collection getData() {

return data;

}

private Collection extractData(final InputStream excelFile)

throws IOException {

HSSFWorkbook workbook = new HSSFWorkbook(excelFile);

data = new ArrayList();

Sheet sheet = workbook.getSheetAt(0);

int numberOfColumns = countNonEmptyColumns(sheet);

List rows = new ArrayList();

List rowData = new ArrayList();

for (Row row : sheet) {

if (isEmpty(row)) {

break;

} else {

rowData.clear();

for (int column = 0; column < numberOfColumns; column++) {

Cell cell = row.getCell(column);

rowData.add(objectFrom(workbook, cell));

}

rows.add(rowData.toArray());

}

}

return rows;

}

private boolean isEmpty(final Row row) {

Cell firstCell = row.getCell(0);

boolean rowIsEmpty = (firstCell == null) || (firstCell.getCellType() == Cell.CELL_TYPE_BLANK);

return rowIsEmpty;

}

private int countNonEmptyColumns(final Sheet sheet) {

Row firstRow = sheet.getRow(0);

return firstEmptyCellPosition(firstRow);

}

private int firstEmptyCellPosition(final Row cells) {

int columnCount = 0;

for (Cell cell : cells) {

if (cell.getCellType() == Cell.CELL_TYPE_BLANK) {

break;

}

columnCount++;

}

return columnCount;

}

private Object objectFrom(final HSSFWorkbook workbook, final Cell cell) {

Object cellValue = null;

if (cell.getCellType() == Cell.CELL_TYPE_STRING) {

cellValue = cell.getRichStringCellValue().getString();

}

else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {

cellValue = getNumericCellValue(cell);

}

else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {

cellValue = cell.getBooleanCellValue();

}

else if (cell.getCellType() ==Cell.CELL_TYPE_FORMULA) {

cellValue = evaluateCellFormula(workbook, cell);

}

return cellValue;

}

private Object getNumericCellValue(final Cell cell) {

Object cellValue;

if (DateUtil.isCellDateFormatted(cell)) {

cellValue = new Date(cell.getDateCellValue().getTime());

} else {

cellValue = cell.getNumericCellValue();

}

return cellValue;

}

private Object evaluateCellFormula(final HSSFWorkbook workbook, final Cell cell) {

FormulaEvaluator evaluator = workbook.getCreationHelper() .createFormulaEvaluator();

CellValue cellValue = evaluator.evaluate(cell);

Object result = null;

if (cellValue.getCellType() == Cell.CELL_TYPE_BOOLEAN) {

result = cellValue.getBooleanValue();

}

else if (cellValue.getCellType() == Cell.CELL_TYPE_NUMERIC) {

result = cellValue.getNumberValue();

}

else if (cellValue.getCellType() == Cell.CELL_TYPE_STRING) {

result = cellValue.getStringValue();

}

return result;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值