Come faccio a specificare separata maven obiettivo per l’esecuzione (Cetriolo) prove di accettazione?

Ho la seguente struttura di progetto:

MyProject
   --src
   --test
      --acceptance
         --step_definitions
         --features
      --unit

Vorrei essere in grado di eseguire il mio cetriolo test (test/accettazione) separatamente Maven dal test di unità dichiarate in test/unità, in modo che possano essere eseguito in diversi CI planimetrie etc. Sto usando cetriolo-junit così i ‘corridori’ per ogni test di accettazione sono scritti con JUnit.

È possibile?

 

2 Replies
  1. 13

    È possibile?

    Sì, è possibile. Credo che si debba separare le unità dall’accettazione/test di integrazione di avere:

    Leggermente modificato la struttura delle cartelle per entrambi questi, ponendo i test di integrazione di file in posizione standard di src/it:

    MyProject/

    • src/main/java/ (SUT)
    • src/test/ (test delle unità di codice)
      • java/
      • resources/
    • src/it/ (accettazione/test di integrazione)
      • java/ (punti definizioni)
      • resources/ (file di funzionalità)

    Inoltre, dal design, diversi Maven plugin sono destinati per l’unità e test di integrazione:

    Si deve anche associare l’esecuzione di maven-failsafe-pulgin. Per eseguire i test di integrazione separatamente, è possibile definire un nuovo profilo:

    <profiles>
      <profile>
        <id>acceptance-tests</id>
        <build>
          <plugins>
            <plugin>
              <artifactId>maven-failsafe-plugin</artifactId>
              <version>2.12</version>
              <executions>
                <execution>
                  <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>    
        </build>
      </profile>
    </profiles>

    Avrete anche bisogno di configurare il plugin per la ricerca il src/it albero di directory per i casi di test.

    I test di accettazione può essere eseguito in seguito, utilizzando:

    mvn clean verify -Pacceptance-tests

    Per completare esempio, vi suggerisco di seguire http://www.weblogism.com/item/334/integration-tests-with-cucumber-jvm-selenium-and-maven

    • ha deciso di andare con Gradle, alla fine, come significava che non devo modificare la struttura e può mantenere accettazione / test di integrazione separata così. Questo è veramente utile per un altro progetto, sono costretto a usare maven con se.
  2. 2

    L’altra risposta suggerito di modificare la propria struttura di cartelle che hanno condiviso la cartella per l’integrazione e test di accettazione, ma si può avere la cartella originale della struttura. Anche lei ha detto nel commento che si desidera mantenere tutte e tre (anche non menzionata test di integrazione) separati, che è possibile, anche se hackish.

    Dal momento che ti sembra di avere test/unit per test di unità e test/acceptance per i test di accettazione, sto assumendo test/integration per i test di integrazione.

    <profiles>
        <profile>
            <id>acceptance-test</id>
            <build>
                <plugins>
                    <plugin>
                        <!-- to run directly: mvn failsafe:integration-test -P acceptance-test -->
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <version>2.12</version>
                        <configuration>
                            <testSourceDirectory>test/acceptance</testSourceDirectory>
                            <includes>
                                <include>**/*Acceptance.java</include>
                            </includes>
                            <excludes>
                                <exclude>**/*IT.java</exclude>
                                <exclude>**/*Test.java</exclude>
                            </excludes>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.9.1</version>
                <executions>
                    <execution>
                        <id>add-test-source</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>add-test-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>test/unit</source>
                                <source>test/integration</source>
                                <source>test/acceptance</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12</version>
                <configuration>
                    <testSourceDirectory>test/unit</testSourceDirectory>
                </configuration>
            </plugin>
            <plugin>
                <!-- to run directly: mvn failsafe:integration-test -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <testSourceDirectory>test/integration</testSourceDirectory>
                </configuration>
                <!-- execution below can be used, if tests are needed on 
                    mvn:integration-test -->
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

    Notare però che la separazione si applica solo per le fonti: i file compilati tutti vanno nella stessa cartella, e Per quanto ne so questo è qualcosa che non si può cambiare. Questo significa che è necessario disporre di denominazione strategia di test per separarle l’una dall’altra.

Lascia un commento