Pregunta

acabo de encontrar un caso de prueba TestNG que utiliza Spring para proporcionar la fuente de datos. Como resultado, el código es bastante limpio y conciso.

Sin embargo, tengo que ampliar los casos de prueba para que puedan tomar una lista variable de entradas.

¿Importa si tomo usando referencias de frijol para la lista de listas como he intentado a continuación? ¿Hay una manera de hacer eso y ser bastante fija (es decir, no romper el flujo lógico de entrada, seguido de la producción)? ¿Hay una mejor manera?

<?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>

Tenga en cuenta que el código original parece estar utilizando un mapa en lugar de una lista, ya que parece una forma más fácil de proporcionar una lista de String [2].

¿Fue útil?

Solución

No, se puede utilizar un @DataProvider para alimentar a los métodos de prueba con un número variable de parámetros:

  @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");
  }

imprimirá:

Received 1 parameters
Received 2 parameters

Tenga en cuenta que el método de análisis puede declarar ya sea "objeto ..." o "Object []" (que es el mismo que el compilador).

Otros consejos

Me gustaría utilizar TestNG y su origen de datos como la construcción de la manera correcta de hacer esto. Por supuesto que puede hacer esta configuración de la primavera, pero ya que es el código de prueba creo TestNG es la casa más natural para él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top