设置步骤和附件

Setting up steps and attachments

我正在尝试为我们的集成测试设置 allure2,但有些事情进展不顺利。

TestNG 侦听器工作正常,因为正在填充 allure-results 文件夹。 @Step 和@Attachment 等注释不起作用。

https://github.com/allure-examples/allure-testng-example 中的示例存在相同的问题。

pom.xml的重要部分:

    <dependencies> <dependency>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-testng</artifactId>
                <version>2.0-BETA14</version>
                <scope>test</scope>
            </dependency>
<dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.9.6</version>
            </dependency>
        <dependencies>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <argLine>
                        -
                        javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                    </argLine>
                    <groups>${groups}</groups>
                    <excludedGroups>${excludedGroups}</excludedGroups>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>
                                net.sprd.qa.webdriver.listener.ScreenshotListener,net.sprd.qa.common.listeners.TestPrinterListener,net.sprd.qa.cyo.listeners.Transformer,net.sprd.qa.common.listeners.JiraListener,net.sprd.qa.webdriver.listener.SlackListener,
                            </value>
                        </property>
                        <property>
                            <name>configfailurepolicy</name>
                            <value>continue</value>
                        </property>
                        <property>
                            <name>dataproviderthreadcount</name>
                            <value>${dataProviderthreadCount}</value>
                        </property>
                    </properties>
                    <systemPropertiesFile>
                        ${propertiesFile}
                    </systemPropertiesFile>
                    <disableXmlReport>false</disableXmlReport>
                    <reportsDirectory>target/surefire-reports</reportsDirectory>
                    <parallel>methods</parallel>
                    <threadCount>${threadCount}</threadCount>
                    <forkCount>0</forkCount>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-maven</artifactId>
                <version>2.8</version>
                <configuration>
                    <resultsDirectory>../allure-results</resultsDirectory>
                </configuration>
            </plugin>
        </plugins>

正确传递了 jvm 参数并且路径实际上指向我的 aspectjweaver jar。

问题:

问题是当 forkCount 为 0 时 argLine 不适用。

如果您真的需要禁用分叉,有两种方法可以解决该问题:

  1. MAVEN_OPTS 中配置 AspectJ Weaver。在这种情况下,将编织所有 maven 代码,因此您可能需要添加额外的 aop.xml 并指定需要编织的 classes/packages。
  2. 使用 AspectJ 编译器插件而不是 weaver。