title: several dataProvider per one Test in TestNG
body: <p>I want run same tests for different implementations. In this case I should provide two dataProvider. One for implementations and other for extra data. So I wrote smt like</p>
  
  <pre><code>@DataProvider(name = "ind")
  public Object[][] indexes(){
      return new Object[][]{{1}, {2.5}};
  }
  
  @DataProvider(name = "str")
  public Object[][] strings(){
      return new Object[][]{{"a11", "a12"}, {"a21", "a22"}};
  }
  
   public Object[][] decart(Object[][] a1, Object[][] a2){
      List&lt;Object[]&gt; rez = new LinkedList();
      for(Object[] o : a1){
          for(Object[] o2 : a2){
              rez.add(concatAll(o, o2));
          }
      }
       return rez.toArray(new Object[0][0]);
  }
  
  //in future, probably, I will need do decart for varargs two.
  public static &lt;T&gt; T[] concatAll(T[] first, T[]... rest) {
    int totalLength = first.length;
    for (T[] array : rest) {
      totalLength += array.length;
    }
    T[] result = Arrays.copyOf(first, totalLength);
    int offset = first.length;
    for (T[] array : rest) {
      System.arraycopy(array, 0, result, offset, array.length);
      offset += array.length;
    }
    return result;
  }
  
  @DataProvider(name = "mixed")
  public Object[][] mixed(){
      return decart(indexes(),  strings());
  }
  
  
  @Test(dataProvider = "mixed")
  public void someTest(Number i, String s1, String s2){
      System.out.println(i + "\t" + s1 + "\t" + s2);
  }
  </code></pre>
  
  <p>But this code seems very unnatural.. I think I've done it in wrong way. How I should do thinks like this?</p>