2016-04-01 26 views
3

JUnit 4.x ile parametrelendirmek için bir sorun yaşıyorum. Parametreli testim, parametre olarak 1 dizi karışık tip {{tam sayı çok boyutlu dizi} ve 1 çift} içerir ve bunları nasıl beyan edeceğimi sorun yaşıyorum. Aşağıdaki kodlara bakın.JUnit Parametreli Test - çok boyutlu dizi karışık türleri

Sınıf Robot

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 Testi parametreli

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)); 
    } 

} 
Test

cevap

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 
     } 

    }); 
} 

Yan not:

: Eğer assert yönteminde bir delta sunmak zorundadır 0
double delta = 0.1; // choose something appropriate here 
assertEquals("divergente", expected, Robot.companyBotStrategy(trainingData), delta); 
+0

sadece bir dizin yerine ismini biçimlendirilmiş şekilde biçimlendirilebilir mi? int [] [] nesnesinin ilk parametresinin nasıl biçimlendirileceği (aka override toString()) – Ewoks