Frage

Ich habe gerade einen TestNG Testfall, den Frühling nutzt seine Datenquelle zur Verfügung zu stellen. Als Ergebnis ist der Code recht sauber und prägnant.

Ich brauche aber die Testfälle zu erweitern, so dass sie eine variable Liste von Eingaben erfolgen können.

Bin ich mit stecken Bohne Referenzen für die Liste von Listen wie ich weiter unten versucht haben? Gibt es eine Möglichkeit, das zu tun und immer noch ziemlich werden (das heißt nicht den logischen Ablauf der Eingabe durch Ausgabe gefolgt Abwracken)? Gibt es einen besseren Weg?

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="stringPatternRegexMap" class="java.util.HashMap">
        <constructor-arg>
            <map>
                <entry key="some input #1" value="expected output #1"/>
                <entry key="some input #2" value="expected output #2"/>
                <entry key="some input #3" value="expected output #3"/>
                <entry key-ref="multi-list-1" value="expected output #3"/>
                <entry key-ref="null-reference" value="null-reference"/>
            </map>
        </constructor-arg>
    </bean>

    <bean id="multi-list-1">
            <list>
                    <value>apple</value>
                    <value>banana</value>
                    <value>orange</value>
            </list>
    </bean>

    <bean id="null-reference">
            <value>
                    <null/>
            </value>
    </bean>
</beans>

Beachten Sie, dass der ursprüngliche Code erscheint eine Karte statt einer Liste zu verwenden, weil es einen einfacheren Weg scheint eine Liste von String zu liefern [2].

War es hilfreich?

Lösung

Nein, können Sie eine @DataProvider verwenden ein Testverfahren mit einer variablen Anzahl von Parametern zu füttern:

  @DataProvider
  public Object[][] dp() {
    return new Object[][] {
        new Object[] { new Object[] { "a" } },
        new Object[] { new Object[] { "b", "c" } },
    };
  }

  @Test(dataProvider = "dp")
  public void g1(Object... params) {
    System.out.println("Received " + params.length + " parameters");
  }

druckt:

Received 1 parameters
Received 2 parameters

Beachten Sie, dass Ihre Testmethode kann entweder "Objekt ..." deklarieren oder "Object []" (es ist das gleiche für den Compiler).

Andere Tipps

würde ich TestNG und sein Datasource-Konstrukt als die richtige Art und Weise, dies zu tun. Sie können natürlich auch in diesem Frühjahr Konfiguration machen, aber es ist Testcode, da ich denke, TestNG die mehr natürliche Heimat für sie ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top