我的项目结构如下:
myapp
+- module1
| +- src/main
| \- src/unit-tests
+- module2
| +- src/main
| \- src/unit-tests
+- module-FT
| +- src/tests
| \- pom.xml
\- pom.xml
在Jenkins工作中,根pom是pom.xml
(因为我希望整个项目是为功能覆盖的JaCoCo报告构建的),当运行覆盖报告生成的Maven目标时,我将pom指定为模块FT/pom.xml.
现在,当显示测试结果时,它向我显示了一个总的being=FTs其他模块中的所有单元测试,而我想从报告生成中排除UTs。
但我不认为这与杰科科有关,因为我说的不是杰科科的报告,而是测试结果。单元测试也被计算在内,这是我不想要的。我认为这是因为在下面的Maven根pom中,我给出了pom。xml,这导致了整个项目的构建。但这对JaCoCo进行报道是必要的。我没有使用JaCoCo插件,因为jenkins版本很旧,我无法升级它。
以下是詹金斯的工作细节:
建造:
maven 3.3.3
pom。xml
-B-U-X清洁测试-f功能测试/pom。xml-DsuiteXmlFile=src/test/resources/suites/${test_SUITE}-Dhostname=${test_HOST}-Dprotocol=https-Dport=${test_PORT}
发布步骤:
>
执行shell
#!/bin/bash
# Cleanup workspace
rm -rf target
echo --------------------------------------
echo TEST_HOST is ${TEST_HOST}
echo manifestVersion is ${manifestVersion}
echo --------------------------------------
temp=${manifestVersion}
appname=(${temp//-/ })
manifestid=(${temp// / })
echo appname is ${appname[0]}
echo manifestid is ${manifestid[0]}
mkdir -p ${WORKSPACE}/target/classes
### Copy class files to common folder for analysis
cp -R ${WORKSPACE}/module-common/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-data/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-event/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-dependencies/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-core/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-api/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-legacy-api/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-messaging/target/classes/* ${WORKSPACE}/target/classes
cp -R ${WORKSPACE}/module-service/target/classes/* ${WORKSPACE}/target/classes
# build jacoco pom file in order to dump coverage file from app server
echo '''
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myorg</groupId>
<artifactId>CodeCoverage</artifactId>
<version>0.0.1</version>
<build>
<plugins>
<!-- Dependencies -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<!-- Copy the ant tasks jar. Needed for ts.jacoco.report-ant . -->
<execution>
<id>jacoco-dependency-ant</id>
<goals>
<goal>copy</goal>
</goals>
<phase>process-test-resources</phase>
<inherited>false</inherited>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.ant</artifactId>
<version>0.7.4.201502262128</version>
</artifactItem>
</artifactItems>
<stripVersion>true</stripVersion>
<outputDirectory>${basedir}/target/jacoco-jars</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.4.201502262128</version>
<executions>
<execution>
<id>default-cli</id>
<phase>post-integration-test</phase>
<goals>
<goal>dump</goal>
</goals>
<configuration>
<reset>${Reset}</reset>
<address>${TEST_HOST}</address>
</configuration>
</execution>
</executions>
</plugin>
<!-- Ant plugin. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>report</id>
<phase>post-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<properties>
<srcdir>${env.srcDir}</srcdir>
<classdir>${env.clsDir}</classdir>
<appname>${env.appName}</appname>
</properties>
<target>
<property environment="env" />
<!-- Execute an ant task within maven -->
<echo message="Generating JaCoCo Reports" />
<taskdef name="report" classname="org.jacoco.ant.ReportTask">
<classpath path="${basedir}/target/jacoco-jars/org.jacoco.ant.jar" />
</taskdef>
<mkdir dir="${basedir}/target/coverage-report" />
<report>
<executiondata>
<fileset dir="${basedir}/target">
<include name="jacoco.exec" />
</fileset>
</executiondata>
<structure name="Raptor Coverage Project">
<group name="${env.appName}">
<classfiles>
<fileset dir="${env.clsDir}" />
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${env.srcDir}" />
</sourcefiles>
</group>
</structure>
<html destdir="${basedir}/target/coverage-report/html" />
<xml destfile="${basedir}/target/coverage-report/coverage-report.xml" />
<csv destfile="${basedir}/target/coverage-report/coverage-report.csv" />
</report>
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.ant</artifactId>
<version>0.7.4.201502262128</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>''' > jacoco_pom.xml
调用顶级maven目标:
Maven版本:3.3.3
目标:-fjacoco_pom.xml雅各科:转储antrun:run@report
建议您首先按照标准的maven配置来构建您的项目。这不是一个要求,但是会节省一些手动配置。
modulexx
src
main/java
test/java <-- Unit tests always expected here. Usually with suffix '***Test.java'
it/java <-- Integration tests always expected here. Usually with suffix '***IT.java'
然后,您可以配置Maven Surefire插件和Maven failsafe插件,分别运行单元测试和集成测试,并生成独立的报告。您可以在下面的链接中找到有关如何配置pom的详细信息。xml来使用这些单独的文件夹。
http://maven.apache.org/surefire/maven-surefire-plugin/
http://maven.apache.org/surefire/maven-failsafe-plugin/
我正在使用Gradle sonarqube插件,我需要从sonar分析中排除所有测试源(主要目标是从问题/代码气味报告中筛选出单元测试类) 为此,我使用了专用的属性,如下所示,将整个目录排除在分析之外 这按预期工作(测试源被过滤掉),但是:当设置此属性时,sonar不能正确计算/报告单元测试的数量。 null null
我想在我的代码中对函数进行单元测试,但当我尝试向其中输入ArrayList时,它会给我提供这里不允许的 这是我的代码:
我要从Thorntail搬到Quarkus。在我的测试中,我曾创建一个@deployment方法,在该方法中,我只放置测试所需的内容。特别是,我没有把一个类放在@Startup注释中(因为我不想测试它…)。当我移动到QUARKUS时,我抑制了de@deployment静态方法,然后当我启动测试时@Startup是。。。一开始,发生了很多不好的事情,阻止我测试我想要测试的东西(好吧,它崩溃了,因为它
问题内容: 我有一个简单的功能要测试: 但是,如何测试该函数实际发送到标准输出的内容呢?Test :: Output在Perl中实现了我想要的功能 但这对于每个测试来说都是很多额外的工作。我希望有一种更标准的方法,或者也许是一个抽象库来处理此问题。 问题答案: 还需要记住的一件事是,没有什么可以阻止您编写避免编写样板代码的函数。 例如,我有一个使用的命令行应用程序,我编写了以下函数: 然后像这样使
22.13.7.测试报告 测试任务默认生成以下结果. 一份HTML测试报告 一个与Ant的JUnit测试报告任务兼容的XML.这个格式与许多其他服务兼容,如CI serves 结果是有效的二进制,测试任务会从这些二进制结果生成其他结果。 有一个独立的TestReport任务类型会根据一些Test任务实例生成的二进制源码生成一个HTML报告.使用这种测试类型,需要定义一个destinationDir
当运行单元测试的时候,Gradle 会输出一份 HTML 格式的报告以方便查看结果。Android plugin 则将所有连接设备的测试报告都合并到一个 HTML 格式的报告文件中。所有测试结果都以 XML 文件形式保存到 build/reports/androidTests/ 中(类似于 JUnit 的运行结果保存在 build/reports/tests 中)。可以自定义路径: android