Skip to content
Tags

Pruebas JUnit parametrizadas con cantidad variable de parámetros

enero 31, 2013

Quiero poder tener pruebas JUnit parametrizadas (ver este link para ver un ejemplo simple) pero utilizando la facilidad de java de tener una cantidad variable de argumentos (ver este link para un ejemplo simple), ya que la cantidad de datos de prueba pueden variar, como por ejemplo, una factura la puedo crear con distintas cantidades de productos.

Esta pregunta en StackOverflow fue de gran ayuda.

@RunWith(value = Parameterized.class)
publicclass invoice_test {
    private String id;
    private String date;
    private String clientName;
    private String subtotal;
    private ArrayList<String> lines = new ArrayList<String>();

    public invoice_test(String id, String date, String clientName,
                 String subtotal, String... invoiceLine) {
      this.id = id; this.date = date;
      this.clientName = clientName; this.subtotal = subtotal;
      for (String s : invoiceLine) {
        this.lines.add(s);
      }
    }
    @Parameters
    publicstatic Collection<Object[]> data() throws Exception {
      return getData();
    }

public List<Object[]> getData() throws Exception{

  BufferedReader br = null;
  String linea = null;
  br=new BufferedReader(new FileReader(new File("testdata.txt")));
  List<Object[]> result = new ArrayList<Object[]> ();
  while((linea=br.readLine())!=null){
    Object[] parse = processLine(linea.split(";"));
    result.add(parse);
  }
  br.close();
  return result;
}
private Object[] processLine(String[] split) {
  ArrayList<Object> result = new ArrayList<Object>();
  for(String s : split){
    if (s.contains("&")){
      result.add(s.split("&"));
    }
    else{
      result.add(s);
    }
  }
  return result.toArray();
}

...

@Test
publicvoid tc001_invoice() throws Exception {
   ...
   interface.CreateInvoice(id,date,clientName,subtotal,lines);
   ...
}


Y mi archivo de datos contiene líneas como esta:
id; date; ClientName; subtotal; 5*apple&1*banana&2*peach
Anuncios
Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: