- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们有一个基于maven框架的测试套件,由多模块组成。使用的模块 -
项目
[无代码]test
[@Test
类包含在/src/main/java下,testng.xml
中/src/main/resources]core
[配置为执行环境设置的基本实用程序]driver
[配置测试桶并使用 testng 调整报告生成]尝试整合 report generation using allure ,我已将以下内容添加到 project 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文档指定了经典方法,以执行 test
阶段,即专用于测试执行的 Maven 阶段(通过 maven-surefire-plugin
,在此阶段由 Maven 通过 default bindings 自动调用)。
您实际上按照其文档的规定配置了 maven-surefire-plugin
:在这种情况下,将其指定到父 pom.xml
文件中会很好,在其pluginManagement
section > Maven 将在默认 maven-surefire-plugin
绑定(bind)的 default-test
执行期间获取其全局配置。
但是,整个机制都链接到测试
阶段。你执行了吗?
您没有提供有关 exec-maven-plugin
的详细信息,以及关于 driver
模块应该做什么以及为什么要使用 jetty -maven-plugin
查看报告。通常情况下,测试报告是可用的,可以看到直接的 html
文件,不需要将它们托管在嵌入式 jetty 服务器中,除非整个流程(CI,部署到公司服务器等)需要.这些报告也应该提供给项目文档站点,可以通过 site
生命周期及其 maven-site-plugin
生成。 .
根据您的详细信息,您共享指向 site
文件夹的 jetty-maven-plugin
配置:此文件夹是否在 test
期间生成阶段(如果你调用它)?或者在您的 exec
调用期间?
关于你在父pom中使用依赖关系的方式,你实际上没有在你的问题中分享它,所以不容易提供帮助。通常,您会将依赖项放在所有模块通用的父 pom 的 dependencies
部分(例如,经典示例是 log4j
,每个模块都会使用的东西)。否则,您将使用父 pom 的 dependencyManagement
部分来管理可由一个或多个模块使用的某些依赖项的版本(但模块需要重新声明它们才能有效地使用它们,省略他们的版本,由 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
(默认 jetty URL)可用。那是因为生成了 index.html
。
但是,如果我手动删除 index.html
, jetty 将显示一个 Directory:/
页面,列出可用文件。
因此, Allure 报告很可能没有生成 index.html
文件,因为它很可能不是要生成它,而只是在 期间生成的 HTML 报告测试
阶段。
关于java - Allure 与多模块测试套件的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39298150/
我最近在我的机器上安装了 cx_Oracle 模块,以便连接到远程 Oracle 数据库服务器。 (我身边没有 Oracle 客户端)。 Python:版本 2.7 x86 Oracle:版本 11.
我想从 python timeit 模块检查打印以下内容需要多少时间,如何打印, import timeit x = [x for x in range(10000)] timeit.timeit("
我盯着 vs 代码编辑器上的 java 脚本编码,当我尝试将外部模块包含到我的项目中时,代码编辑器提出了这样的建议 -->(文件是 CommonJS 模块;它可能会转换为 ES6 模块。 )..有什么
我有一个 Node 应用程序,我想在标准 ES6 模块格式中使用(即 "type": "module" in the package.json ,并始终使用 import 和 export)而不转译为
我正在学习将 BlueprintJS 合并到我的 React 网络应用程序中,并且在加载某些 CSS 模块时遇到了很多麻烦。 我已经安装了 npm install @blueprintjs/core和
我需要重构一堆具有这样的调用的文件 define(['module1','module2','module3' etc...], function(a, b, c etc...) { //bun
我是 Angular 的新手,正在学习各种教程(Codecademy、thinkster.io 等),并且已经看到了声明应用程序容器的两种方法。首先: var app = angular.module
我正在尝试将 OUnit 与 OCaml 一起使用。 单元代码源码(unit.ml)如下: open OUnit let empty_list = [] let list_a = [1;2;3] le
我在 Angular 1.x 应用程序中使用 webpack 和 ES6 模块。在我设置的 webpack.config 中: resolve: { alias: { 'angular':
internal/modules/cjs/loader.js:750 return process.dlopen(module, path.toNamespacedPath(filename));
在本教程中,您将借助示例了解 JavaScript 中的模块。 随着我们的程序变得越来越大,它可能包含许多行代码。您可以使用模块根据功能将代码分隔在单独的文件中,而不是将所有内容都放在一个文件
我想知道是否可以将此代码更改为仅调用 MyModule.RED 而不是 MyModule.COLORS.RED。我尝试将 mod 设置为变量来存储颜色,但似乎不起作用。难道是我方法不对? (funct
我有以下代码。它是一个 JavaScript 模块。 (function() { // Object var Cahootsy; Cahootsy = { hello:
关闭。这个问题是 opinion-based 。它目前不接受答案。 想要改进这个问题?更新问题,以便 editing this post 可以用事实和引文来回答它。 关闭 2 年前。 Improve
从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace)。所有的标准库都是模块。标
Ruby的模块非常类似类,除了: 模块不可以有实体 模块不可以有子类 模块由module...end定义. 实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看
我有一个脚本,它从 CLI 获取 3 个输入变量并将其分别插入到 3 个变量: GetOptions("old_path=s" => \$old_path, "var=s" =
我有一个简单的 python 包,其目录结构如下: wibble | |-----foo | |----ping.py | |-----bar | |----pong.py 简单的
这种语法会非常有用——这不起作用有什么原因吗?谢谢! module Foo = { let bar: string = "bar" }; let bar = Foo.bar; /* works *
我想运行一个命令: - name: install pip shell: "python {"changed": true, "cmd": "python <(curl https://boot
我是一名优秀的程序员,十分优秀!