Allure 与多模块测试套件的集成
Allure integration with multi-module test suite
我们有一个基于maven框架的测试套件,由多模块组成。使用的模块 -
project
[无代码]
test
[@Test
类 包含在 /src/main/java 下,testng.xml
在 /src/main/resources]
core
[配置为执行环境设置的基本实用程序]
driver
[配置测试桶并使用 testng 调制报告生成]
尝试整合 report generation using allure,我已将以下内容添加到 项目 pom.xml
-
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
<argLine>
-javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
</argLine>
<properties>
<property>
<name>listener</name>
<value>ru.yandex.qatools.allure.junit.AllureRunListener</value>
</property>
</properties>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.10.v20150310</version>
<configuration>
<webAppSourceDirectory>${project.build.directory}/site/allure-maven-plugin</webAppSourceDirectory>
<stopKey>stop</stopKey>
<stopPort>1234</stopPort>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</reporting>
还有与 test pom.xml
相同的依赖项 -
<!--allure related dependencies-->
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-testng-adaptor</artifactId>
<version>1.4.16</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.detro.ghostdriver</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-java-annotations</artifactId>
<version>1.5.0.RC2</version>
</dependency>
Step 1 - After executing the tests mvn exec:java -pl driver
I can see a /target/allure-results folder generated.
Step 2 - mvn jetty:run
reads Started Jetty Server
Step 3 - But when I go to localhost:8080 on my browser it just has a heading
Directory :/
问题
我怀疑我指定的路径在某处不正确,因此 jetty 无法找到报告,但无法确定位置。是针对执行的测试还是针对资源中的 testng.xml
?
还是我只需要更正 pom 中某处的路径?
我尝试使用依赖项(在父 project
pom 中)的方式是否正确?
更新 1
使用的exec配置如下-
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<configuration>
<mainClass>com.driver.Driver</mainClass>
</configuration>
</plugin>
</plugins>
</build>
感谢任何回复。
这个问题有很多开放点,由于缺乏细节而不清楚。
根据您的描述,项目结构如下:
project
|
|--- test-module
|--- core-module
|--- driver-module (depends on `core` and `test`)
|
\ pom.xml
您实际上仅通过 driver
模块和 exec-maven-plugin
执行测试,但是 allure documentation specifies the classic approach, to execute the test
phase, that is, the Maven phase dedicated to tests execution (via the maven-surefire-plugin
, automatically invoked by Maven during this phase via default bindings).
您实际上按照其文档的规定配置 maven-surefire-plugin
:在 parent pom.xml
文件中指定它在这种情况下会很好,在其 pluginManagement
部分> Maven 将在 default-test
执行默认 maven-surefire-plugin
绑定期间获取其全局配置。
然而,整个机制与test
阶段相关联。你执行了吗?
您没有提供有关 exec-maven-plugin
的详细信息、它应该对 driver
模块做什么以及为什么要使用 jetty-maven-plugin
查看报告。通常情况下,测试报告是可用的,可以看到直接 html
文件,不需要将它们托管在嵌入式码头服务器中,除非整个过程需要(CI,部署到公司服务器等。 ).这些报告也应该提供给项目文档站点,可以通过 site
生命周期及其 maven-site-plugin
.
生成
根据您的详细信息,您共享指向 site
文件夹的 jetty-maven-plugin
配置:此文件夹是否在 test
阶段生成(如果您调用它)?或者在您的 exec
调用期间?
关于你在parent pom中使用依赖关系的方式,你实际上并没有在你的问题中分享它,所以不容易提供帮助。通常,您会将依赖项放在 parent pom 的 dependencies
部分,这对所有模块都是通用的(例如,经典示例是 log4j
,每个模块都会使用)。否则,您将使用 parent pom 的 dependencyManagement
部分来管理可由一个或多个模块使用的某些依赖项的版本(但模块需要 re-declare 它们才能有效使用它们,但省略了它们的版本,由 parent) 指定。也就是说,parent pom 是治理和协调的中心。
更新
关于生成的 /target/allure-results
文件夹,您还需要检查其内容是否为有效的站点目录(即,例如,它应包含 index.html
)。
正在创建一个新的 Maven webapp 项目并将以下内容添加到其 pom.xml
文件中:
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.10.v20150310</version>
<configuration>
<webAppSourceDirectory>${project.build.directory}/site</webAppSourceDirectory>
<stopKey>stop</stopKey>
<stopPort>1234</stopPort>
</configuration>
</plugin>
</plugins>
</build>
(注意:完全按照您的问题,但仅指向 site
目录)
并执行:
mvn clean install site
mvn jetty:run
Maven 站点(在上面调用的 site
阶段生成)将在 localhost:8080
(默认码头 URL)可用。那是因为生成了index.html
。
但是,如果我手动删除 index.html
,码头将显示 Directory: /
页面,列出可用文件。
因此,魅力报告很可能没有生成 index.html
文件,因为它很可能并不是要生成它,而只是 HTML 在 [=] 期间生成的报告15=]相.
我们有一个基于maven框架的测试套件,由多模块组成。使用的模块 -
project
[无代码]test
[@Test
类 包含在 /src/main/java 下,testng.xml
在 /src/main/resources]core
[配置为执行环境设置的基本实用程序]driver
[配置测试桶并使用 testng 调制报告生成]
尝试整合 report generation using allure,我已将以下内容添加到 项目 pom.xml
-
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
<argLine>
-javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
</argLine>
<properties>
<property>
<name>listener</name>
<value>ru.yandex.qatools.allure.junit.AllureRunListener</value>
</property>
</properties>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.10.v20150310</version>
<configuration>
<webAppSourceDirectory>${project.build.directory}/site/allure-maven-plugin</webAppSourceDirectory>
<stopKey>stop</stopKey>
<stopPort>1234</stopPort>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</reporting>
还有与 test pom.xml
相同的依赖项 -
<!--allure related dependencies-->
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-testng-adaptor</artifactId>
<version>1.4.16</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.detro.ghostdriver</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-java-annotations</artifactId>
<version>1.5.0.RC2</version>
</dependency>
Step 1 - After executing the tests
mvn exec:java -pl driver
I can see a /target/allure-results folder generated.Step 2 -
mvn jetty:run
reads Started Jetty ServerStep 3 - But when I go to localhost:8080 on my browser it just has a heading
Directory :/
问题
我怀疑我指定的路径在某处不正确,因此 jetty 无法找到报告,但无法确定位置。是针对执行的测试还是针对资源中的
testng.xml
? 还是我只需要更正 pom 中某处的路径?我尝试使用依赖项(在父
project
pom 中)的方式是否正确?
更新 1
使用的exec配置如下-
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<configuration>
<mainClass>com.driver.Driver</mainClass>
</configuration>
</plugin>
</plugins>
</build>
感谢任何回复。
这个问题有很多开放点,由于缺乏细节而不清楚。
根据您的描述,项目结构如下:
project
|
|--- test-module
|--- core-module
|--- driver-module (depends on `core` and `test`)
|
\ pom.xml
您实际上仅通过 driver
模块和 exec-maven-plugin
执行测试,但是 allure documentation specifies the classic approach, to execute the test
phase, that is, the Maven phase dedicated to tests execution (via the maven-surefire-plugin
, automatically invoked by Maven during this phase via default bindings).
您实际上按照其文档的规定配置 maven-surefire-plugin
:在 parent pom.xml
文件中指定它在这种情况下会很好,在其 pluginManagement
部分> Maven 将在 default-test
执行默认 maven-surefire-plugin
绑定期间获取其全局配置。
然而,整个机制与test
阶段相关联。你执行了吗?
您没有提供有关 exec-maven-plugin
的详细信息、它应该对 driver
模块做什么以及为什么要使用 jetty-maven-plugin
查看报告。通常情况下,测试报告是可用的,可以看到直接 html
文件,不需要将它们托管在嵌入式码头服务器中,除非整个过程需要(CI,部署到公司服务器等。 ).这些报告也应该提供给项目文档站点,可以通过 site
生命周期及其 maven-site-plugin
.
根据您的详细信息,您共享指向 site
文件夹的 jetty-maven-plugin
配置:此文件夹是否在 test
阶段生成(如果您调用它)?或者在您的 exec
调用期间?
关于你在parent pom中使用依赖关系的方式,你实际上并没有在你的问题中分享它,所以不容易提供帮助。通常,您会将依赖项放在 parent pom 的 dependencies
部分,这对所有模块都是通用的(例如,经典示例是 log4j
,每个模块都会使用)。否则,您将使用 parent pom 的 dependencyManagement
部分来管理可由一个或多个模块使用的某些依赖项的版本(但模块需要 re-declare 它们才能有效使用它们,但省略了它们的版本,由 parent) 指定。也就是说,parent pom 是治理和协调的中心。
更新
关于生成的 /target/allure-results
文件夹,您还需要检查其内容是否为有效的站点目录(即,例如,它应包含 index.html
)。
正在创建一个新的 Maven webapp 项目并将以下内容添加到其 pom.xml
文件中:
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.10.v20150310</version>
<configuration>
<webAppSourceDirectory>${project.build.directory}/site</webAppSourceDirectory>
<stopKey>stop</stopKey>
<stopPort>1234</stopPort>
</configuration>
</plugin>
</plugins>
</build>
(注意:完全按照您的问题,但仅指向 site
目录)
并执行:
mvn clean install site
mvn jetty:run
Maven 站点(在上面调用的 site
阶段生成)将在 localhost:8080
(默认码头 URL)可用。那是因为生成了index.html
。
但是,如果我手动删除 index.html
,码头将显示 Directory: /
页面,列出可用文件。
因此,魅力报告很可能没有生成 index.html
文件,因为它很可能并不是要生成它,而只是 HTML 在 [=] 期间生成的报告15=]相.