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>
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
Betreiben Sie Ihre IT über maven-surefire-plugin oder über maven-failsafe-plugin? – khmarbaise
Wäre gut, Versionen Ihrer Abhängigkeiten zu wissen. –