2016-01-13 14 views
7

Sono un po 'nuovo a Cucumber/Maven, quindi ho bisogno di aiuto nell'esecuzione di test case. Ho sviluppato una suite di automazione in eclissi usando cetriolo e selenio. Per eseguire file di caratteristiche specifiche/classe runner Junit, faccio clic con il pulsante destro del mouse sui file in Eclipse ed eseguo.Come eseguire singoli file di feature cetriolo tramite il prompt dei comandi e tramite jenkins usando Maven?

Ma come eseguirlo tramite il prompt dei comandi o Jenkins dando comandi specifici per l'esecuzione di 2-3 file di funzionalità (o) 2-3 classi di corridori Junit su 50 file di funzioni o classi JUnit?

Di seguito è riportato il pacchetto di esplorazione di come ho strutturato in Eclipse.

enter image description here

riportano di seguito le pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.perspecsys</groupId> 
    <artifactId>salesforce</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>salesforce</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 


    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>info.cukes</groupId> 
      <artifactId>cucumber-java</artifactId> 
      <version>1.1.2</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>info.cukes</groupId> 
      <artifactId>cucumber-picocontainer</artifactId> 
      <version>1.1.2</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>info.cukes</groupId> 
      <artifactId>cucumber-junit</artifactId> 
      <version>1.1.2</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.seleniumhq.selenium</groupId> 
      <artifactId>selenium-java</artifactId> 
      <version>2.48.2</version> 
     </dependency> 

    </dependencies> 
</project> 

risposta

8

È possibile eseguire un singolo file funzione utilizzando cucumber.options che sovrascriverà tutte le opzioni che si hanno nel @CucumberOptions della nota:

mvn test -Dcucumber.options="src/test/features/com/perspecsys/salesforce/featurefiles/Account.feature" 
+0

Grazie per l'aiuto. Questo comando ha funzionato nel prompt dei comandi. Tuttavia, come posso configurare lo stesso in Jenkins? Voglio eseguire solo il pacchetto com.perspecsys.salesforce.featurefiles in modo che tutti i file delle funzioni vengano eseguiti sotto di esso. Puoi aiutarmi nella configurazione passo passo di Jenkins? – Ronnie

2

Dato che si sta utilizzando Maven e si dispone già di una classe di corridori separata per funzionalità, è sufficiente utilizzare lo Failsafe plug-in o il plugin Surefire per passare un parametro dalla riga di comando come questo e selezionare quale runner eseguire.

variante fail-safe:

-Dit.test=Account*Test,Login*Test 

versione infallibile:

-Dtest=Account*Test,Login*Test 

noti che è possibile utilizzare i caratteri jolly, passare un elenco separato da virgole di test e fare riferimento la posizione completa e filtrare per pacchetto.

-Dit.test=com.perpecsys.salesforce.*Test 

Per questo mi sarebbe normalmente utilizzano il plug-fail-safe, come il cetriolo prova una più come test di integrazione (test end-to-end in realtà), e questo è ciò che plugin è per, mentre il plugin Surefire è progettato per eseguire test unitari.

Maggiori informazioni su entrambi i plugin:

http://maven.apache.org/surefire/maven-failsafe-plugin/examples/single-test.html

http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html

Da Jenkins è esattamente lo stesso, basta usare il plugin Maven progetto per creare un nuovo progetto Maven e nella sezione Genera, sotto il campo e il campo opzioni specificare il comando maven come:

clean verify -Dit.test=Account*Test 

https://wiki.jenkins-ci.org/display/JENKINS/Maven+Project+Plugin

In alternativa, è sufficiente aggiungere il Richiamare alto livello target Maven passo alla costruzione, se non si utilizza il Progetto Plugin Maven, e aggiungere le opzioni di lì.

Spero che questo aiuti.

2

Se si voleva difficile codificato, si potrebbe fare qualcosa di simile:

import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 
import org.junit.runner.RunWith; 

@RunWith(Cucumber.class) 
@CucumberOptions(
     features={"src/test/resources/features/belly.feature"} 
     ,glue = "steps" //whatever the name of your steps package is 
     ) 
public class RunCukesTest 
{ 
} 
Problemi correlati