2017-03-02 1 views
0

Je fais un test simple avec Arquillian et testng et MavenPas non avec IT teste quand exception est levée Arquillian TestNG maven

@Test(enabled=true) 
@OperateOnDeployment("test") 
public void testError() throws Exception { 
    throw new Exception(); 
} 

en théorie le test en erreur et les tests suivants ne sera pas exécuté mais rien ajout, tous les tests sont OK dans les résultats, donc je ne peux pas vraiment tester mes fonctionnalités car même si une exception est levée, aucune erreur ne s'ajoute. Ce n'est pas normal.

i recréent simple webapp avec pom.xml suivant:

<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>sample.spnego</groupId> 
<artifactId>sample-app</artifactId> 
<packaging>war</packaging> 
<version>1.0</version> 
<name>sample-app</name> 

<dependencyManagement> 
    <dependencies> 
     <!-- Define the version of JBoss' Java EE 6 APIs we want to import. Any 
      dependencies from org.jboss.spec will have their version defined by this 
      BOM --> 
     <dependency> 
      <groupId>org.jboss.spec</groupId> 
      <artifactId>jboss-javaee-6.0</artifactId> 
      <version>3.0.3.Final</version> 
      <scope>import</scope> 
      <type>pom</type> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian</groupId> 
      <artifactId>arquillian-bom</artifactId> 
      <!-- <version>1.1.8.Final</version> --> 
      <version>1.1.12.Final</version> 
      <scope>import</scope> 
      <type>pom</type> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 




<dependencies> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.spec</groupId> 
     <artifactId>jboss-javaee-6.0</artifactId> 
     <version>1.0.0.Final</version> 
     <type>pom</type> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.enterprise</groupId> 
     <artifactId>cdi-api</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.spec.javax.annotation</groupId> 
     <artifactId>jboss-annotations-api_1.1_spec</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.spec.javax.ejb</groupId> 
     <artifactId>jboss-ejb-api_3.1_spec</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.10</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.arquillian.testng</groupId> 
     <artifactId>arquillian-testng-container</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.arquillian.protocol</groupId> 
     <artifactId>arquillian-protocol-servlet</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.eu.ingwar.tools</groupId> 
     <artifactId>arquillian-suite-extension</artifactId> 
     <version>1.1.2</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.4</version> 
     <scope>provided</scope> 
    </dependency> 


    <dependency> 
     <groupId>org.apache.nutch</groupId> 
     <artifactId>nutch</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.wildfly.arquillian</groupId> 
     <artifactId>wildfly-arquillian-container-managed</artifactId> 
     <version>2.0.2.Final</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 



<profiles> 
    <profile> 
     <id>integration</id> 
     <build> 
      <plugins> 
       <!-- <plugin> --> 
       <!-- <groupId>org.apache.maven.plugins</groupId> --> 
       <!-- <artifactId>maven-surefire-plugin</artifactId> --> 
       <!-- <version>2.19.1</version> --> 
       <!-- </plugin> --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <version>2.19.1</version> 

        <configuration> 
         <systemPropertyVariables> 
          <jboss.server.log.dir>C:/dev/servers/wildfly-9.0.2.Final/standalone/log</jboss.server.log.dir> 
          <arquillian.launch>jbossas-managed</arquillian.launch> 
          <jbossas.startup.timeout>240</jbossas.startup.timeout> 

         </systemPropertyVariables> 
         <includes> 
          <include>*.java</include> 
         </includes> 
         <!-- <groups>org.jboss.arquillian.testng.Arquillian</groups> --> 
        </configuration> 
        <executions> 
         <execution> 
          <goals> 
           <goal>integration-test</goal> 
           <goal>verify</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 

    </profile> 
</profiles> 

puis en suivant ArquillianDeploymentHelper:

@ArquillianSuiteDeployment 
public class ArquillianDeploymentHelper { 

//private static final Logger LOGGER = Logger.getLogger(ArquillianDeploymentHelper.class); 

private static String WEBAPP_SRC = "src/main/webapp"; 
private static String POM_FILE = "pom.xml"; 
private static String ARCHIVE_NAME = "test.war"; 

@Deployment(name = "test") 
public static Archive<?> generateDefaultDeployment() { 

    // Generate the default WAR used by all *IT tests using @OperateOnDeployment("AofWeb") annotation 
    //LOGGER.info("Generating " + ARCHIVE_NAME + " archive ..."); 

    PomEquippedResolveStage pom = Maven.resolver().loadPomFromFile(POM_FILE); 
    ScopeType[] scopes = {ScopeType.COMPILE, ScopeType.IMPORT, ScopeType.TEST}; // no SYSTEM and no PROVIDED 
    File[] libs = pom.importDependencies(scopes).resolve().using(TransitiveStrategy.INSTANCE).asFile(); 

    WebArchive archive = ShrinkWrap.create(WebArchive.class, ARCHIVE_NAME) 

      .addAsWebInfResource(new File(WEBAPP_SRC, "WEB-INF/beans.xml")); 
    archive.merge(ShrinkWrap.create(GenericArchive.class).as(ExplodedImporter.class) 
      .importDirectory(WEBAPP_SRC).as(GenericArchive.class), 
      "/", Filters.include(".*\\.(?i)(jpg|js|png|gif|bmp|html|xhtml|css)$")); 

    // No need to log the content anymore, the archive is kept in target directory 
    // "deploymentExportPath" variable in arquillian.xml 
// LOGGER.info(archive.toString(true)); 

    return archive; 
} 

}

et arquillian.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<arquillian xmlns="http://jboss.org/schema/arquillian" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://jboss.org/schema/arquillian  http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> 

<!-- Force the use of the Servlet 3.0 protocol with all containers, as it is the most mature --> 
<defaultProtocol type="Servlet 3.0" /> 

<!-- Keep generated archive for inspection 
--> 
<engine> 
     <property name="deploymentExportPath">target/</property> 
</engine> 



<!-- Local JBoss/WildFly instance --> 
<container qualifier="jbossas-managed" default="true"> 
    <configuration> 
     <property name="jbossHome">${env.JBOSS_HOME}</property> 
     <property name="serverConfig">standalone-real-continuous-integration.xml</property> 
     <!-- true : server must be started by the user, false : arquillian will start it itself --> 
     <property name="allowConnectingToRunningServer">true</property> 
    </configuration> 
</container> 

<!-- Remote JBoss/WildFly instance --> 
<container qualifier="jbossas-remote" default="false"> 
    <configuration> 
     <property name="managementAddress">remoteHost</property> 
     <property name="managementPort">9999</property> 
    </configuration> 
</container> 

Version 9.0.2 wildfly

REMARQUE: i test tutoriel Arquillian il est même version de Bom et le test en pot au lieu de la guerre et à l'exception de produire un échec de test => OK

configuration ci-dessus: exception ne pas produire un échec => NOK

Une idée?

EDIT: Je reproduis le problème avec l'ajout dans le travail de test:

 <dependency> 
     <groupId>org.wildfly.arquillian</groupId> 
     <artifactId>wildfly-arquillian-container-managed</artifactId> 
      <version>2.1.0.Alpha1</version> 
     <scope>test</scope> 
    </dependency> 

et en utilisant Arquillian.xml

à la place:

<dependency> 
<groupId>org.jboss.arquillian.container</groupId> 
<artifactId>arquillian-weld-ee-embedded-1.1</artifactId> 
<version>1.0.0.CR9</version> 
<scope>test</scope> 
</dependency> 
<dependency> 
<groupId>org.jboss.weld</groupId> 
<artifactId>weld-core</artifactId> 
<version>2.3.5.Final</version> 
<scope>test</scope> 
</dependency> 
+1

Je l'ai testé avec une configuration similaire et mes tests échouent quand une exception est levée. Au fait, "les tests sont OK", est-ce que cela signifie "succesfull" ou simplement "skipped"? Pouvez-vous fournir la sortie? – Adonis

+1

Courez-vous vos TI via maven-surefire-plugin ou via maven-failsafe-plugin? – khmarbaise

+0

Serait bon de connaître aussi les versions de vos dépendances. –

Répondre

1

enfin il semble être la dernière version tesNG 6.10 si je rétrograde à 6.9.10 cela fonctionne !!!

+0

Merci, avait le même problème et résolu en déclassant la version de TestNG :) –

0

Peut-être que cela vous aidera: https://stackoverflow.com/a/32066322/4471199

surefire-maven-plugin ne reconnaît pas les tests qui se termine par * IT. Vous devez changer son nom de Test * ou utiliser une autre technique

+0

pas le problème pour moi comme je l'ai dit avant c'est la dernière version de test NG quand downgrade version ça marche, je ne sais pas qui vote pour vous mais l'exemple montre qu'il fonctionne, seul le résultat n'était pas bon ...de plus dans l'exemple j'utilise maven-failsafe-plugin, je ne sais pas pourquoi parlez-vous de surefire ... – cyril