我有一个多模块的maven项目
parent
pom.xml
module
pom.xml
core-api
pom.xml
integ-tests
pom.xml
我有maven surefire插件设置,用于执行单元测试“*测试。“核心api”模块中包含java。
我们在一个单独的“集成测试”模块中进行了缓慢的长时间运行的集成测试。我们使用“*测试。java也用于我们的integ测试。
我们需要能够编译所有源代码,但希望排除“intg-test”作为默认maven“test”阶段的一部分运行。我们计划使用配置文件来启用“intg-test”模块的测试阶段。我不想使用“故障安全”插件。
组合的矩阵在这里
mvn | core | integ-test
test | run unit tests | exclude
test -PintegTest | unit tests | integ tests
我已经在我的父pom中定义了surefire插件,带有属性“skip.integ.tests”,它将通过配置文件“-PintegTest”进行控制。
<properties>
<skip.integ.tests>true</skip.integ.tests>
</properties>
..
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</build>
..
<profiles>
<profile>
<id>integTests</id>
<properties>
<skip.integ.tests>false</skip.integ.tests>
</properties>
</profile>
</profiles>
在我的“integ-test”pom中,我覆盖了“maven-surefire-plugin”配置,并设置了“skipTests”配置来查看属性的值。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>${skip.integ.tests}</skipTests>
</configuration>
</plugin>
</plugins>
</build>
我的问题是integ测试模块测试在任何情况下都会运行。你知道我的设置哪里出了问题吗?
在您的Maven构建中,您可以排除:
-Dmaven.skip来编译和执行单元测试(通过Surefire插件)和集成测试(通过故障保护插件)。测试=真
相反,如果您将集成测试放在单独的Maven模块中(即在您的案例中为intg-test),您可以通过配置文件直接将其从Maven构建中排除,如下例所示——请参阅要启动的聚合器pom.xml和maven命令行的提取:
<modules>
<!-- remove 'integ-test' from this list -->
</modules>
<profiles>
<profile><id>build-it</id>
<activation><activeByDefault>true</activeByDefault></activation>
<modules><module>integ-test</module></modules>
</profile>
</profiles>
然后
mvn install-P! build-it
首先,您应该根据用于运行集成测试的maven故障保护插件的命名约定来命名集成测试。此外,集成前测试、集成测试和集成后测试生命周期阶段旨在运行这些测试。这意味着在您的案例中,根据这样的文档配置maven故障保护插件。maven故障保护插件绑定到集成测试生命周期阶段。
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.16</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
我建议将以下配置文件添加到您的联调模块中,如下所示:
<profiles>
<profile>
<id>run-its</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.16</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
这为您提供了以下选项:
>
仅运行单元测试
mvn-DskipTests=真实测试
运行编译等,但没有单元测试。
mvn-修剪其验证
运行打包等单元测试和集成测试
mvn安装
在没有集成测试的情况下运行安装。
mvn-DskipTests=true安装
在不运行单元测试或集成测试的情况下运行安装。
运行似乎surefire没有执行其测试目标(或者至少没有选择我在配置中包含的测试)。 这是一个多模块maven项目,目前全部在groovy中,其结构类似于以下内容: 我在pom中有以下surefire配置。xml: 但是,当我针对这个pom执行
英文原文:http://emberjs.com/guides/testing/integration/ 集成测试通常用来测试应用中得重要工作流。集成测试用来模拟用户交互和确认交互结果。 设置 为了对Ember应用进行集成测试,需要在测试框架中运行应用。首先需要将根元素(root element)设置为任意一个已知将存在的元素。如果根元素在测试运行时可见的话,这对测试驱动开发非常有用,带来的帮助非常
我有一个编译和运行时所需的依赖项,但我想在运行测试时将其排除。这可能吗?也许,通过设置个人资料?但是,如何仅在生命周期阶段停用它?
如何模拟集成测试所需的许多依赖关系? 我使用Mockito进行纯单元测试。在这种情况下,Pure意味着测试一个类,嘲笑它的所有依赖关系。漂亮。 现在是集成测试。假设在这种情况下,集成测试将测试以下内容: 消息被放入队列 我们也可以说,在第2步中发生的处理是严肃的事情。它依赖于大量的数据库交互、多种外部服务、文件系统,以及各种各样的东西。流还会引发很多副作用,所以我不能简单地确保响应是正确的——我需
我在单元测试用例中使用Mockito和Power Mockito。当我运行配置文件代码时,我能够生成jacoco报告,但是 当我在测试阶段试图生成Jacoco报告时,我遇到了错误 错误[错误]无法执行目标组织。jacoco:jacoco maven插件:0.8.2:project testproject api上的报告(默认报告):生成jacoco报告时出错:创建报告时出错:分析d:\worksp
Selenium 能被选为最好集成测试、回归测试方案,是因为: 1.Selenium IDE ,一个FireFox plugin,能自动记录用户的操作,生成测试脚本。 2. 生成的测试脚本可以用Selenium Core手工执行,也能基于Selenium RC放入Java,C#,Ruby的单元测试用例中自动运行。 3. 测试用例调用实际的浏览器(如IE、FireFox)来执行测试。和有些开源方案