2010-06-03 11 views
11

Comencé a usar la nueva función (ish) JUnit Theories para parametrizar las pruebas. Si su teoría está configurado para tener, por ejemplo, un argumento Integer, el corredor de prueba Theories recoge ningún Integer s marcados con @DataPoint:JUnit Theories: ¿Por qué no puedo usar listas (en lugar de matrices) como DataPoints?

@DataPoint 
public static Integer number = 0; 

así como cualquier Integer s en matrices:

@DataPoints 
public static Integer[] numbers = {1, 2, 3}; 

o incluso los métodos que devuelven matrices como:

@DataPoints 
public static Integer[] moreNumbers() { return new Integer[] {4, 5, 6}; }; 

pero no en List s. El siguiente no funciona:

@DataPoints 
public static List<Integer> numberList = Arrays.asList(7, 8, 9); 

Editar: Parece que otras colecciones no son compatibles tampoco, ya que esto no funciona.

@DataPoints 
public static Collection<Integer> numberList = new HashSet<Integer>() {{ 
    add(7); 
    add(8); 
    add(9); 
}}; 

estoy haciendo algo mal, o qué List s, s Set, etc. realmente no funciona? ¿Fue una elección de diseño consciente no permitir el uso de Collection s como puntos de datos, o es solo una característica que no se ha implementado todavía? ¿Hay planes para implementarlo en una versión futura de JUnit?

(actualmente estoy utilizando la versión 4.8.1 mientras que la nueva versión es 4.8.2, pero it looks like esto no es algo que se añadió en 4.8.2)

+0

Como nota al margen, no veo una etiqueta para esta característica de "Teorías". Supongo que la etiqueta ['theory'] es para preguntas teóricas sobre cosas como la complejidad de la gran O y demás. Por favor, siéntase libre de volver a etiquetar. – MatrixFrog

+0

+1 Parece bastante extraño. ¿Has probado otros tipos de colecciones? – ponzao

+0

Acabo de intentar usar un 'Set' y actualicé la pregunta. Eso tampoco funciona, ya sea que lo declaras como 'Set' o' Collection'. – MatrixFrog

Respuesta

1

He mirado en el tema, y ​​se parece que ahora hay un compromiso pendiente para ello. La razón por la que no estaba allí parece ser simplemente que nadie lo pidió y es bastante complejo de hacer (como ha demostrado en your patch)

+1

Gracias por el seguimiento. Debería haber agregado un comentario a esta respuesta SO diciendo que logré encontrar una solución (aunque ciertamente no es perfecta) y luego envié una solicitud de extracción a github. – MatrixFrog

+0

No estaba seguro, si poner un comentario en una publicación de 3 años es algo bueno. Pero solo deseo saber cuál es la actualización sobre este tema. Este problema aún no se resuelve en la última versión de Mockito. También ya no existe un enlace para emitir el comentario anterior. – user613114

Cuestiones relacionadas