关于testhome junit参数化的问题解决
問題的描述來自:
https://testerhome.com/topics/9295
問題的描述是無法獲取參數化, 我也心血來潮,自己花了幾分鐘改正問題
@RunWith(Parameterized.class) public class ResultParamTest {private int actCode;private String actMessage;private int expCode;private String expMessage;public ResultParamTest(int expCode, int actCode, String expMessage, String actMessage) {this.expCode = expCode;this.actCode = actCode;this.expMessage = expMessage;this.actMessage = actMessage;}@Parameterized.Parameterspublic static Collection prepareData() throws IOException {ResultParam resultParam = new ResultParam("test_case.xlsx", 0);ArrayList<Integer> a = resultParam.expCode();ArrayList<Integer> b = resultParam.actCode();ArrayList<String> c = resultParam.expMessage();ArrayList<String> d = resultParam.actMessage();Object[][] objects = {{a.get(0), b.get(0), c.get(0), d.get(0)}, {a.get(1), b.get(1), c.get(1), d.get(1)},........{}....{}};return Arrays.asList(objects);}@Testpublic void testResultParam() throws IOException {Assert.assertEquals(expCode, actCode);Assert.assertEquals(expMessage, actMessage);} }改正后的代碼:
package com.mj;import static org.junit.Assert.*;import java.util.ArrayList; import java.util.Arrays; import java.util.Collection;import junit.framework.Assert;import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized;@RunWith(Parameterized.class) public class CalculatorTest {private int actCode;private String actMessage;private int expCode;private String expMessage;public CalculatorTest(int expCode, int actCode, String expMessage,String actMessage) {this.expCode = expCode;this.actCode = actCode;this.expMessage = expMessage;this.actMessage = actMessage;}@Parameterized.Parameterspublic static Collection prepareData() {ArrayList<Integer> a = new ArrayList<Integer>();ArrayList<Integer> b = new ArrayList<Integer>();ArrayList<String> c = new ArrayList<String>();ArrayList<String> d = new ArrayList<String>();// 五個正常用例for (int i = 0; i < 5; i++) {a.add(i);b.add(i);c.add("正確" + i);d.add("正確" + i);}// 五個非正常用例for (int i = 0; i < 5; i++) {a.add(i);b.add(i + 1);c.add("正確" + i);d.add("錯誤" + (i + 1));}int size = a.size() - 1;Object[][] objList = new Object[size][4];for (int i = 0; i < objList.length; i++) {objList[i][0] = a.get(i);objList[i][1] = b.get(i);objList[i][2] = c.get(i);objList[i][3] = d.get(i);}return Arrays.asList(objList);}@Testpublic void test() {System.err.println("expCode is " + expCode + " actCode is " + actCode+ " expMessage is " + expMessage + " actMessage is "+ actMessage);assertEquals(expCode, actCode);assertEquals(expMessage, actMessage);}} 運行打印數據:
expCode is 0 actCode is 0 expMessage is 正確0 actMessage is 正確0
expCode is 1 actCode is 1 expMessage is 正確1 actMessage is 正確1
expCode is 2 actCode is 2 expMessage is 正確2 actMessage is 正確2
expCode is 3 actCode is 3 expMessage is 正確3 actMessage is 正確3
expCode is 4 actCode is 4 expMessage is 正確4 actMessage is 正確4
expCode is 0 actCode is 1 expMessage is 正確0 actMessage is 錯誤1
expCode is 1 actCode is 2 expMessage is 正確1 actMessage is 錯誤2
expCode is 2 actCode is 3 expMessage is 正確2 actMessage is 錯誤3
expCode is 3 actCode is 4 expMessage is 正確3 actMessage is 錯誤4
因為我對群友的業務不熟悉,加上我沒有 ResultParam resultParam = new ResultParam("test_case.xlsx", 0); 這個類的代碼,我就自己制作了點數據。
其實這里我只是簡單的測試,應該用等價類,邊界值加上點數據的,只是在上班時間,順帶趕緊記錄下。
總結
以上是生活随笔為你收集整理的关于testhome junit参数化的问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 能帮帮忙吗?这怎么解决
- 下一篇: Word2Vec 学习心得