2012-03-28 15 views
22

Escribí una prueba junit para agregar dos números. Necesito pasar estos números desde la línea de comando. Estoy corriendo esta prueba junit de la herramienta como expertoCómo pasar la entrada de la línea de comandos al programa de prueba junit maven

mvn -Dtest=AddNumbers 

Mi programa de pruebas se parece a esto

int num1 = 1; 
int num2 = 2; 

@Test 
public void addNos() { 
    System.out.println((num1 + num2)); 
} 

Cómo pasar estos números de línea de comandos?

+1

¿Podemos tener una respuesta aquí – nullpointer

Respuesta

8

Puede pasar en la línea de comando como este

mvn -Dtest=AddNumbers -Dnum1=100

acceder a ellos en su prueba con

int num1=Integer.valueOf(System.getProperty("num1"));

+0

marcada si tenemos que pasar parámetro de cadena, cómo hacerlo? –

25

Al pasar los números como las propiedades del sistema como lo sugiere @artbristol es una buena idea, pero descubrí que no siempre se garantiza que estas propiedades se propaguen a la prueba.

para estar seguro para pasar las propiedades del sistema para la prueba utilice el parámetro maven surefire pluginargLine, como

mvn -Dtest=AddNumbers -DargLine="-Dnum1=1 -Dnum2=2" 
10

Para pasar las entradas de línea de comandos para programa de pruebas JUnit experto de seguir estos pasos. Por ejemplo, si usted necesita para pasar parámetros nomArchivo en prueba de la unidad ejecutada por Maven, a continuación, siga los pasos:

  1. en el código JUnit - parámetro se pasa a través de las propiedades del sistema:

    @BeforeClass 
    public static void setUpBeforeClass() throws Exception { 
        String fileName = System.getProperty("fileName"); 
        log.info("Reading config file : " + fileName); 
    } 
    
  2. En pom.xml: especifique el nombre de parámetro en la configuración del complemento surefire y use notación {fileName} para forzar a maven a obtener el valor real de las propiedades del sistema

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <systemProperties> 
          <property> 
           <name>fileName</name> 
           <value>${fileName}</value> 
          </property> 
         </systemProperties> 
        </configuration> 
    </plugin> 
    
  3. En el parámetro de nombre de fichero pase la línea de comandos a las propiedades del sistema de JVM:

    mvn clean test -DfileName=my_file_name.txt 
    
Cuestiones relacionadas