3

我试图弄清楚如何在我的 TestNG 套件完成后自动构建魅力报告。我知道可以通过在测试后手动运行来创建报告mvn site,但是如果可以自动生成报告那就太好了。下面是我的 pom.xml 中的 allure 配置

                <properties>
                  <testng.congig>${selenium.suite}</testng.congig>
                  <aspectj.version>1.7.4</aspectj.version>
                  <allure.version>1.4.3</allure.version>
                </properties>

              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.14</version>
                <configuration>
                    <testFailureIgnore>false</testFailureIgnore>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                    <suiteXmlFiles>
                        <suiteXmlFile>target\test-classes\${testng.congig}</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <dependency>
              <groupId>ru.yandex.qatools.allure</groupId>
              <artifactId>allure-testng-adaptor</artifactId>
              <version>${allure.version}</version>
           </dependency>

           <reporting>
             <excludeDefaults>false</excludeDefaults>
             <plugins>
              <plugin>
                 <groupId>ru.yandex.qatools.allure</groupId>
                 <artifactId>allure-maven-plugin</artifactId>
                 <version>{latest.version}</version>
               </plugin>
             </plugins>
           </reporting>
4

3 回答 3

7

测试执行和站点生成在不同的生命周期中运行。

默认生命周期与站点生命周期不同,请参阅https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

您可以做的只是链接命令:例如mvn install site,或者mvn deploy site-deploy如果您计划在某处使该站点可用。这将运行测试,然后执行站点生成。

Maven 目标与该生命周期中的一个阶段相关。mvn package将执行绑定到某个阶段的所有插件,直到package阶段。由于站点生成有其自己的生命周期,我不会将插件执行绑定到默认生命周期的阶段之一。报告插件通常依赖于完成的构建。

于 2015-07-20T09:18:42.947 回答
2

步骤 1. 将依赖项 Allure Builder Reporter 添加到 pom.xml https://mvnrepository.com/artifact/ru.yandex.qatools.allure/allure-report-builder/2.1

第 2 步:添加此代码:

// It will generate the Allure Report folder.
  new AllureReportBuilder("1.5.4", new File("target/allure-report")).unpackFace();
  new AllureReportBuilder("1.5.4", new File("target/allure-report")).processResults(new 
  File("target/allure-results"));
于 2019-01-06T07:27:41.433 回答
0

自动生成 Allure 报告。请按照以下步骤操作:

  1. 使用 2.8.1 版添加 Allure 命令行的依赖项 [https://mvnrepository.com/artifact/io.qameta.allure/allure-commandline/2.8.1][1]

  2. 在 src/test/resources 下创建 allure.properties 文件并设置如下值 allure.results.directory=target/allure-results 意思是,当在目标文件夹下生成 allure 结果时

  3. 相应地复制下面的代码使用。

    import io.qameta.allure.Extension;
    import io.qameta.allure.ReportGenerator;
    import io.qameta.allure.allure1.Allure1Plugin;
    import io.qameta.allure.allure2.Allure2Plugin;
    import io.qameta.allure.category.CategoriesPlugin;
    import io.qameta.allure.category.CategoriesTrendPlugin;
    import io.qameta.allure.context.FreemarkerContext;
    import io.qameta.allure.context.JacksonContext;
    import io.qameta.allure.context.MarkdownContext;
    import io.qameta.allure.context.RandomUidContext;
    import io.qameta.allure.core.*;
    import io.qameta.allure.duration.DurationPlugin;
    import io.qameta.allure.duration.DurationTrendPlugin;
    import io.qameta.allure.environment.Allure1EnvironmentPlugin;
    import io.qameta.allure.executor.ExecutorPlugin;
    import io.qameta.allure.history.HistoryPlugin;
    import io.qameta.allure.history.HistoryTrendPlugin;
    import io.qameta.allure.idea.IdeaLinksPlugin;
    import io.qameta.allure.influxdb.InfluxDbExportPlugin;
    import io.qameta.allure.launch.LaunchPlugin;
    import io.qameta.allure.mail.MailPlugin;
    import io.qameta.allure.owner.OwnerPlugin;
    import io.qameta.allure.prometheus.PrometheusExportPlugin;
    import io.qameta.allure.retry.RetryPlugin;
    import io.qameta.allure.retry.RetryTrendPlugin;
    import io.qameta.allure.severity.SeverityPlugin;
    import io.qameta.allure.status.StatusChartPlugin;
    import io.qameta.allure.suites.SuitesPlugin;
    import io.qameta.allure.summary.SummaryPlugin;
    import io.qameta.allure.tags.TagsPlugin;
    import io.qameta.allure.timeline.TimelinePlugin;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    
    private void onGenerateAllureReport() {
            Runtime.getRuntime().addShutdownHook(new Thread() {
                public void run() {
                    try {
                        final List<Extension> extensions = Arrays.asList(new JacksonContext(), new MarkdownContext(), new FreemarkerContext(), new RandomUidContext(), new MarkdownDescriptionsPlugin(), new RetryPlugin(), new RetryTrendPlugin(), new TagsPlugin(), new SeverityPlugin(), new OwnerPlugin(), new IdeaLinksPlugin(), new CategoriesPlugin(), new CategoriesTrendPlugin(), new HistoryPlugin(), new HistoryTrendPlugin(), new DurationPlugin(), new DurationTrendPlugin(), new StatusChartPlugin(), new TimelinePlugin(), new SuitesPlugin(), new TestsResultsPlugin(), new AttachmentsPlugin(), new MailPlugin(), new InfluxDbExportPlugin(), new PrometheusExportPlugin(), new SummaryPlugin(), new ExecutorPlugin(), new LaunchPlugin(), new Allure1Plugin(), new Allure1EnvironmentPlugin(), new Allure2Plugin(), new ReportWebPlugin());
                        Configuration configuration = (new ConfigurationBuilder()).fromExtensions(extensions).build();
                        Path resultDi = Paths.get("target/allure-results");
                        Path outDir = Paths.get("target/allure-report");
                        new ReportGenerator(configuration).generate(outDir, resultDi);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }~~~
    
    
  4. 第一种使用方法 - 实现 SuiteInializer Listner 并粘贴代码 onFinish 方法。并在开始方法上请粘贴下面的代码以删除旧的诱惑结果。 FileUtils.deleteDirectory(new File("target/allure-results"));

  5. 第二种方法:你可以用黄瓜钩。

于 2021-05-09T14:42:40.720 回答