Wie benutze ich einen JUnit Parametrisierte Läufer mit einer varargs-Konstruktor?

Schrieb ich ein mockup Beispiel um dies zu verdeutlichen, ohne dass alles vertraulich behandelt. Es ist ein "dummy" - Beispiel, das nichts tut, aber das problem tritt in der test-initialiser.

@RunWith(Parameterized.class)
public class ExampleParamTest
{
 int ordinal;
 List<String> strings;

 public ExampleParamTest(int ordinal, String... strings)
 {
  this.ordinal = ordinal;
  if (strings.length == 0)
  {
   this.strings = null;
  }
  else
  {
   this.strings = Arrays.asList(strings);
  }
 }

 @Parameters
 public static Collection<Object[]> data() {
  return Arrays.asList(new Object[][] {
    {0, "hello", "goodbye"},
    {1, "farewell"}
  });
 }

 @Test
 public void doTest() {
  Assert.assertTrue(true);
 }
}

Grundsätzlich habe ich eine test-Konstruktor akzeptiert mehrere Argumente für eine lokale Liste Variablen und ich möchte diese bevölkern, durch eine Reihe initialiser. Die test-Methode mit der local-Liste-variable korrekt - ich habe entfernt diese Logik zu vereinfachen, ist der test.

Wenn ich dies Schreibe, meine IDE hat keine Beschwerden über die syntax und die test-Klasse baut ohne Fehler bei der Kompilierung. Aber wenn ich es laufen lasse, bekomme ich:

doTest[0]:
java.lang.IllegalArgumentException: wrong number of arguments
  at java.lang.reflect.Constructor.newInstance(Unknown Source)
doTest[1]:
java.lang.IllegalArgumentException: argument type mismatch
  at java.lang.reflect.Constructor.newInstance(Unknown Source)

Was genau schief gegangen ist, hier, und wie ich die richtig verwenden dieses Muster?

  • Was ist doTest und welche Daten hat das Netz?
  • In diesem Beispiel doTest ist nur ein dummy-test zu ermöglichen, diese testsuite zur Ausführung in JUnit. Das problem ist nicht in den test-code, wie Sie sehen werden, wenn Sie versuchen, führen Sie diesen test so wie es da steht; trotz der Tatsache, dass es einem fast leeren test-Körper, die es immer noch nicht laufen aufgrund der oben genannten Initialisierung Fehler.
  • Ich fügte hinzu, ein Teil der stacktrace, den ich sehe, wenn ich mit Ihr testen, um deutlich zu machen, dass der Fehler passiert, wenn die varargs-Konstruktor aufgerufen wird. Wenn das anders aus, was Sie sehen, fühlen Sie sich frei, es zu ändern oder verwerfen es.
InformationsquelleAutor Kidburla | 2010-08-16
Schreibe einen Kommentar