我们有一个基于maven框架的测试套件,由多模块组成。使用的模块 -
project
[无代码] test
[@Test
类包含在 / src / main / java , / src / main / resources testng.xml下> 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>
第1步 - 执行测试
mvn exec:java -pl driver
后,我可以看到 / target / allure-results < / strong>生成的文件夹。第2步 -
mvn jetty:run
读取已启动的Jetty服务器第3步 - 但是当我在浏览器上访问localhost:8080时,它只有一个标题
目录:/
问题
我怀疑我指定的路径在某处是不正确的,因此码头无法找到报告,但无法确定哪里。是针对执行的测试还是资源中的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>
感谢任何回应。
答案 0 :(得分:3)
由于缺乏细节,这个问题有很多未解决的问题。
根据您的描述,项目结构如下:
project
|
|--- test-module
|--- core-module
|--- driver-module (depends on `core` and `test`)
|
\ pom.xml
您实际上只能通过driver
模块和exec-maven-plugin
执行测试,但allure文档指定了执行test
阶段的经典方法,即,Maven阶段专门用于测试执行(通过maven-surefire-plugin
,由Maven在此阶段通过default bindings自动调用。)
您实际配置了其文档中指定的maven-surefire-plugin
:在pom.xml
部分&gt;中将其指定为父pluginManagement
文件就可以了。 Maven将在default-test
执行默认maven-surefire-plugin
绑定期间获取其全局配置。
但是,整个机制与test
阶段相关联。你执行它吗?
您没有提供有关exec-maven-plugin
的详细信息以及它应该对driver
模块执行的操作以及您使用jetty-maven-plugin
查看报告的原因。通常,测试报告是可用的,可以看到直接html
文件,无需在嵌入式jetty服务器中托管它们,除非整个过程需要(CI,部署到公司服务器等)。这些报告也应该提供给项目文档站点,该站点可以通过site
生命周期及其maven-site-plugin
生成。
根据您的详细信息,您共享指向jetty-maven-plugin
文件夹的site
配置:此文件夹是在test
阶段生成的(如果您调用它)?或者在exec
调用期间?
关于在父pom中使用依赖项的方式,实际上你并没有在你的问题中分享它,所以不容易提供帮助。通常,您可以将依赖项放在父pom的dependencies
部分中,这些部分对于所有模块都是通用的(例如,经典示例为log4j
,每个模块都会使用)。否则,您将使用父pom的dependencyManagement
部分来管理可能由一个或多个模块使用的某些依赖项的版本(但模块需要重新声明它们才能有效地使用它们,尽管省略了它们的版本,由父母指定)。也就是说,父母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
(默认的jetty URL)上可用。这是因为生成了index.html
。
但是,如果我手动删除index.html
,则该码头将显示Directory: /
页面,列出可用文件。
因此,最有可能的是,诱惑报告没有生成index.html
文件,因为很可能它不是为了生成它,而是在test
阶段只是一个HTML报告的红外线