关于testhome junit参数化的问题解决

来源:互联网 发布:公知引发社会动荡 编辑:程序博客网 时间:2024/05/23 15:41

问题的描述来自:
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.Parameters    public 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);    }    @Test    public 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.Parameters    public 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);    }    @Test    public 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); 这个类的代码,我就自己制作了点数据。

其实这里我只是简单的测试,应该用等价类,边界值加上点数据的,只是在上班时间,顺带赶紧记录下。

原创粉丝点击