当前位置: 首页 > 知识库问答 >
问题:

如何从功能测试报告中排除单元测试?

南门飞扬
2023-03-14

我的项目结构如下:

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版本很旧,我无法升级它。

以下是詹金斯的工作细节:

建造:

  1. maven版本:maven 3.3.3
  2. 根pom:pom。xml
  3. 目标和选项:-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

  • 共有1个答案

    臧兴学
    2023-03-14

    建议您首先按照标准的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