测试函数的输入包含数组,例如:
public class SumArray {
       ... ...
       //对数组的前num个数求和,并返回
       //进行参数化测试
        public int add(int[ ] data, int num) {
          ...  .....
        }
}对上面的的add()函数进行参数化测试时怎样编写准备测试数据的函数?
... ...
@RunWith(Parameterized.class)
public class SumArrayTest {
        ... ...
       //对add()函数进行测试,准备数据
       @Parameters
        public static Collection prepareData() {
                //How ???
        }
        ... ....
}

解决方案 »

  1.   

    //对数组的前num个数求和,并返回
        //进行参数化测试
         public int add(int[ ] data, int num) {
          int sum=0;
          if(data.length>=num){
          for(int i=0;i<num;i++){
          sum+=data[i];
          }
          return sum;
          }
          System.out.println("num值过大,非法参数");
          return 0;
         }

         @Test
         public void test3(){
          int[] data={1,2,5,6,4};
          int num=6;
          System.out.println("数组的前"+num+"和为:"+add(data,num));
         }

    简单测试~你看下吧~
      

  2.   

    你可以这样:
    @Parameterized.Parameters
        public static Collection data(){
            int[] inputArray1 = {0,2,4,5,2,4,1};
            Integer[] outputArray1 = {2,4};
            int[] inputArray2 = {0,0,0,0,0};
            Integer[] outputArray2 = {0};
            
            return Arrays.asList(new Object[][]{
                    {inputArray1,outputArray1},
                    {inputArray2,outputArray2}        });
        }因为要求的是object[][],你不能直接在里面写{},{}来作为一个object,{}会被默认为一个数组,这样的话就是一个三维数组了。你可以用一个变量来代替{},这样就可以 了