簡體   English   中英

拋出異常時,IT測試不會失敗Arquillian TestNG Maven

[英]No Failure with IT tests when Exception is thrown Arquillian TestNG maven

我用Arquillian和testNG和maven做一個簡單的測試

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

從理論上講,測試將是錯誤的,隨后的測試將不會執行,但不會追加任何內容,所有測試的結果都可以,因此我無法真正測試我的功能,因為即使拋出異常也不會追加錯誤。 這是不正常的。

我用以下pom.xml重新創建一個簡單的webapp:

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

然后跟隨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;
}

}

和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版本9.0.2

注意:我測試Arquillian教程,它是Bom的相同版本,並且在jar中測試而不是war,並且異常會產生測試失敗=> OK

上面的配置:異常不會產生failut => NOK

任何想法 ?

編輯:我重現添加測試工作的問題:

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

並使用Arquillian.xml

相反:

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

最后,如果我降級到6.9.10,它似乎是最新的tesNG版本6.10,它可以正常工作!

也許這會對您有所幫助: https : //stackoverflow.com/a/32066322/4471199

surefire-maven-plugin無法識別以* IT結尾的測試。 您應該將其名稱更改為* Test或使用其他技術

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM