2016-04-01 18 views
3

JUnit 4.xでパラメータ化する際に問題が発生しました。私のパラメータ化されたテストは、1つの配列混合型{{整数多次元配列}と1つのdouble}をパラメータとして構成されており、それらを宣言する方法が難しいです。以下のコードを参照してください。JUnitパラメータ化テスト - 多次元配列の混合型

クラス

public class Robot { 
    public static double companyBotStrategy(int[][] trainingData) { 
     double botTime = 0; 
     double isCorrect = 0; 

     for (int i = 0; i < trainingData.length; i++) { 
      int[] v = trainingData[i]; 
      if (v[1] == 1) { 
       botTime += v[0]; 
       isCorrect++; 
      } 
     } 
     return botTime/isCorrect; 

    } 

} 

テストロボットへのJUnitテストのパラメータ化された

import static org.junit.Assert.assertEquals; 

import java.util.Arrays; 

import org.junit.Test; 
import org.junit.runners.Parameterized.Parameters; 

public class RobotPrmtTest { 

    private double expected; 
    private int[][] trainingData; 

    public RobotPrmtTest(int[][] trainingData, double expected) { 
     this.trainingData = trainingData; 
     this.expected = expected; 
    } 

    @Parameters(name = "{index}") 
    public static Iterable<Object[]> getLoadTest() { 

     return Arrays.asList(new Object[][] { }); 
     /*loadTest array mix type 
     * {int [][] trainingData, double expected} 
     * looks like it 
     { 
      { 
       {{ 6, 1 }, { 4, 1 }},4.5 
      }, 
      { 
       {{4,1},{4,-1}, {0,0}, {6,1}},5.0 
      } 
     } 
     */ 
    } 

    @Test 
    public void validateParamaters() { 
     assertEquals("divergente", expected, Robot.companyBotStrategy(trainingData)); 
    } 

} 

答えて

1
@Parameters(name = "{index}") 
public static Iterable<Object[]> getLoadTest() { 

    return Arrays.asList(new Object[][] { 
     { 
      new int[][]{{6, 1}, {4, 1}}, 4.5 
     }, 
     { 
      new int[][]{{4, 1}, {4, -1}, {0, 0}, {6, 1}}, 5.0 
     } 

    }); 
} 

サイドノート:あなたのアサート方法でデルタを供給する必要があります。

double delta = 0.1; // choose something appropriate here 
assertEquals("divergente", expected, Robot.companyBotStrategy(trainingData), delta); 
+0

パラメータ名は、インデックスだけでなく、より良い方法でフォーマットできますか? int [] [] objectである最初のパラメータの書式設定(toString()をオーバーライドする) – Ewoks