2017-03-02 1 views
0

ich einen einfachen Test mit Arquillian und testng machen und mavenKein Ausfall mit IT-Tests, wenn Exception Arquillian TestNG Maven geworfen wird

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

in der Theorie der Test fehlerhaft sein und folgenden Tests werden nicht ausgeführt, aber nichts append, alle Tests sind OK in den Ergebnissen, also kann ich meine Funktionalitäten nicht wirklich testen, weil selbst wenn eine Ausnahme geworfen wird kein Fehler append. Es ist nicht normal.

i neu erstellen eine einfache Webapp mit folgenden 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>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> 

dann ArquillianDeploymentHelper folgende:

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

}

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

Wildfly Version 9.0.2

HINWEIS: i Arquillian Tutorial testen, ist es dieselbe Version von bom und Test im Glas statt Krieg und Ausnahme einen Testfehler erzeugen => OK

über Konfiguration: Ausnahme kein Fehler erzeugen => NOK

Irgendeine Idee?

EDIT: ich das Problem reproduzieren mit dem Hinzufügen in Testarbeits:

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

und mit Arquillian.xml

statt:

<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

Ich getestet mit einer ähnlichen Konfiguration und meine Tests fehlschlagen, wenn eine Ausnahme ausgelöst wird. Übrigens: "Tests sind in Ordnung", heißt das erfolgreich oder einfach übersprungen? Können Sie die Ausgabe bereitstellen? – Adonis

+1

Betreiben Sie Ihre IT über maven-surefire-plugin oder über maven-failsafe-plugin? – khmarbaise

+0

Wäre gut, Versionen Ihrer Abhängigkeiten zu wissen. –

Antwort

1

endlich scheint es die letzte tesNG Version zu sein 6.10 Wenn ich auf 6.9.10 heruntergrade, funktioniert es !!!

+0

Danke, hatte das gleiche Problem und löste es durch Downgrade TestNG Version :) –

0

dies wird Ihnen vielleicht helfen: https://stackoverflow.com/a/32066322/4471199

todsichere-Maven-Plugin nicht Tests erkennt, die mit * IT endet. Sie sollten den Namen in * Test oder andere Technik verwenden

+0

nicht das Problem für mich, wie ich sagte, bevor es die letzte Version von Test NG ist, wenn Downgrade-Version es funktioniert, ich weiß nicht, wer für Sie wählen, aber das Beispiel zeigen, es funktioniert, nur das Ergebnis war nicht gut ...Außerdem benutze ich in dem Beispiel maven-failsafe-plugin, ich weiß nicht, warum sprichst du von todsicheren ... – cyril

Verwandte Themen