2

我们试图让 Allure 报告作为我们 Jenkins 构建的一部分生成。

我们已严格按照此处的文档进行操作(除了这些说明不起作用)

按照说明,我们安装了 allure jenkins 插件和 allure-nunit 适配器(按照说明将 v0.1.0 zip 中包含的 7 个文件提取到 Jenkins 服务器上的 NUnit 2.6.3 插件子目录)。

控制台输出如下:

Recording NUnit tests results
Allure Report Generation: started

Allure Report Generation: find directories by mask [**/AllureResults] 
Allure Report Generation: found allure result directories [C:\Program Files 
(x86)\Jenkins\jobs\<myjob>\workspace\AllureResults] 
Allure Report Generation: copy founded directories in directory [C:\Program Files 
(x86)\Jenkins\jobs\<myjob>\workspace\allure6887431138581709111.tmp\results] 
Allure Report Generation: generate report from directory [C:\Program Files 
(x86)\Jenkins\jobs\<myjob>\workspace\allure6887431138581709111.tmp] 
Allure Report Generation: attach report link to build and project 
Allure Report Generation: Can't delete directory [C:\Program Files 
(x86)\Jenkins\jobs\<myjob>\workspace\allure6887431138581709111.tmp] 
java.nio.file.FileSystemException: C:\Program Files 
(x86)\Jenkins\jobs\<myjob>\workspace\allure6887431138581709111.tmp\repositories\com    \fasterxml\jackson\core\jackson-annotations\2.3.0\jackson-annotations-2.3.0.jar: The process 
cannot access the file because it is being used by another process. 

    at sun.nio.fs.WindowsException.translateToIOException(Unknown Source) 
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) 
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) 
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source) 
    at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source) 
    at java.nio.file.Files.delete(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at hudson.Util.deleteFile(Util.java:247) 
    at hudson.Util.deleteRecursive(Util.java:310) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.Util.deleteRecursive(Util.java:301) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.Util.deleteRecursive(Util.java:301) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.Util.deleteRecursive(Util.java:301) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.Util.deleteRecursive(Util.java:301) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.Util.deleteRecursive(Util.java:301) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.Util.deleteRecursive(Util.java:301) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.Util.deleteRecursive(Util.java:301) 
    at hudson.Util.deleteContentsRecursive(Util.java:212) 
    at hudson.FilePath$13.invoke(FilePath.java:1108) 
    at hudson.FilePath$13.invoke(FilePath.java:1105) 
    at hudson.FilePath.act(FilePath.java:918) 
    at hudson.FilePath.act(FilePath.java:896) 
    at hudson.FilePath.deleteContents(FilePath.java:1105) 
    at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.deleteRecursive(AllureReportPublisher.java:221) 
    at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.perform(AllureReportPublisher.java:143) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:770) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:734) 
    at hudson.model.Build$BuildExecution.post2(Build.java:183) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:683) 
    at hudson.model.Run.execute(Run.java:1770) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:89) 
    at hudson.model.Executor.run(Executor.java:240) 
Allure Report Generation: completed 

Allure 不会使构建失败,它被标记为 PASSED。

在 Jenkins 工作区\TestReports 目录(由我的脚本创建)中,正确生成了 nunit-testresults.xml 文件。AllureResults 目录被创建并填充了一个网站外壳(即数据子目录对所有内容都有 0)。

在 Jenkins 工作区目录中创建了另一个目录 allure.tmp,其中包括一个“结果”子目录,其中包含生成的文件,但在数据子目录中的文件中再次为 0。

还创建了 Jenkins 工作区目录中 AllureResults 目录的另一个副本。为什么?

在 Jenkins 本身中,我可以单击呈现的“Allure Report”,它给了我:“Test run (0 testsuites, 0 testcases) PASSED”

在我们看来,文档缺乏,但似乎也有人在使用它。他们是如何让它发挥作用的?

因此被引导问: 1. 你是如何得到它来实际处理nunit-testresults.xml 文件的?1. 还有什么我们需要安装和(或)配置的吗?1. 我们应该安装 allure-core 还是包含在 Jenkins 插件或 allure-nunit 适配器中?

提前致谢。


根据您的建议在这里

我已经安装了 0.1.0 的 allure-nunit 适配器和最新版本的 allure jenkins 插件。

我正在运行具有以下内容的构建步骤批处理文件:

IF NOT EXIST "%WORKSPACE%\TestReports" 
(
    MKDIR TestReports
)

"C:\Program Files (x86)\NUnit 2.6.3\bin\nunit-console.exe" mytest.dll /framework=net-4.0 /xml=TestReports\nunit-data-testsuite.xml
exit %%ERRORLEVEL%%

这一步是将 nunit-data-testsuite.xml 发送到 Jenkins 工作区\TestReports 目录。

我不再运行 allure-cli 包。

作为后期构建步骤,我运行 Allure 报告生成任务,配置如下:

结果目录:**/TestReports 报告版本:自定义:1.41(应该是 1.39 吗?) 生成:适用于所有构建

在 allure.tmp 目录中生成了东西。我看到我的 nunit-data-testsuite.xml 文件已复制到 allure.tmp\results 目录。

...在这一点上看起来不错。

...但后来我在控制台中得到了这个:

Recording NUnit tests results

Allure Report Generation: started

Allure Report Generation: find directories by mask [**/TestReports] 
Allure Report Generation: found allure result directories [C:\Program Files (x86)\Jenkins\jobs\MyTests\workspace\TestReports] 
Allure Report Generation: copy founded directories in directory [C:\Program Files (x86)\Jenkins\jobs\MyTests\workspace\allure6553695529802657068.tmp\results] 
Allure Report Generation: generate report from directory [C:\Program Files (x86)\Jenkins\jobs\MyTests\workspace\allure6553695529802657068.tmp] 
ERROR: Publisher ru.yandex.qatools.allure.jenkins.AllureReportPublisher aborted due to exception 
java.io.IOException: ru.yandex.qatools.allure.report.AllureReportBuilderException: java.lang.reflect.InvocationTargetException 
    at ru.yandex.qatools.allure.jenkins.utils.ReportGenerator.invoke(ReportGenerator.java:47) 
    at ru.yandex.qatools.allure.jenkins.utils.ReportGenerator.invoke(ReportGenerator.java:18) 
    at hudson.FilePath.act(FilePath.java:918) 
    at hudson.FilePath.act(FilePath.java:896) 
    at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.generateReport(AllureReportPublisher.java:211) 
    at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.perform(AllureReportPublisher.java:141) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:770) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:734) 
    at hudson.model.Build$BuildExecution.post2(Build.java:183) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:683) 
    at hudson.model.Run.execute(Run.java:1770) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:89) 
    at hudson.model.Executor.run(Executor.java:240) 
Caused by: ru.yandex.qatools.allure.report.AllureReportBuilderException: java.lang.reflect.InvocationTargetException 
    at ru.yandex.qatools.allure.report.AllureReportBuilder.processResults(AllureReportBuilder.java:135) 
    at ru.yandex.qatools.allure.jenkins.utils.ReportGenerator.invoke(ReportGenerator.java:44) 
    ... 14 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at ru.yandex.qatools.allure.report.AllureReportBuilder.processResults(AllureReportBuilder.java:133) 
    ... 15 more 
Caused by: ru.yandex.qatools.allure.data.ReportGenerationException: net.sf.saxon.event.NoOpenStartTagException: An attribute node (type) cannot be created after the children of the containing element 
    at ru.yandex.qatools.allure.data.utils.XslTransformationUtils.applyTransformation(XslTransformationUtils.java:55) 
    at ru.yandex.qatools.allure.data.utils.XslTransformationUtils.applyTransformation(XslTransformationUtils.java:44) 
    at ru.yandex.qatools.allure.data.utils.XslTransformationUtils.applyTransformation(XslTransformationUtils.java:35) 
    at ru.yandex.qatools.allure.data.utils.XslTransformationUtils.applyTransformations(XslTransformationUtils.java:29) 
    at ru.yandex.qatools.allure.data.TestRunGenerator.generate(TestRunGenerator.java:69) 
    at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureReportGenerator.java:51) 
    ... 20 more 
Caused by: net.sf.saxon.event.NoOpenStartTagException: An attribute node (type) cannot be created after the children of the containing element 
    at net.sf.saxon.event.NoOpenStartTagException.makeNoOpenStartTagException(NoOpenStartTagException.java:49) 
    at net.sf.saxon.event.ComplexContentOutputter.attribute(ComplexContentOutputter.java:296) 
    at net.sf.saxon.instruct.CopyOf.copyAttribute(CopyOf.java:572) 
    at net.sf.saxon.instruct.Copy.processLeavingTail(Copy.java:221) 
    at net.sf.saxon.instruct.Template.expand(Template.java:220) 
    at net.sf.saxon.instruct.CallTemplate$CallTemplatePackage.processLeavingTail(CallTemplate.java:440) 
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:317) 
    at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:210) 
    at net.sf.saxon.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:174) 
    at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556) 
    at net.sf.saxon.instruct.Instruction.process(Instruction.java:93) 
    at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:296) 
    at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:203) 
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:345) 
    at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:210) 
    at net.sf.saxon.instruct.ApplyTemplates.process(ApplyTemplates.java:170) 
    at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:296) 
    at net.sf.saxon.instruct.Copy.processLeavingTail(Copy.java:217) 
    at net.sf.saxon.instruct.Template.expand(Template.java:220) 
    at net.sf.saxon.instruct.CallTemplate$CallTemplatePackage.processLeavingTail(CallTemplate.java:440) 
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:317) 
    at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:210) 
    at net.sf.saxon.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:174) 
    at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556) 
    at net.sf.saxon.instruct.Instruction.process(Instruction.java:93) 
    at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:296) 
    at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:203) 
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:345) 
    at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:210) 
    at net.sf.saxon.instruct.ApplyTemplates.process(ApplyTemplates.java:170) 
    at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:296) 
    at net.sf.saxon.instruct.Copy.processLeavingTail(Copy.java:217) 
    at net.sf.saxon.instruct.Template.expand(Template.java:220) 
    at net.sf.saxon.instruct.CallTemplate$CallTemplatePackage.processLeavingTail(CallTemplate.java:440) 
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:317) 
    at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:210) 
    at net.sf.saxon.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:174) 
    at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:556) 
    at net.sf.saxon.instruct.Instruction.process(Instruction.java:93) 
    at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:296) 
    at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:203) 
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:345) 
    at net.sf.saxon.instruct.ApplyTemplates.defaultAction(ApplyTemplates.java:378) 
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:333) 
    at net.sf.saxon.Controller.transformDocument(Controller.java:1807) 
    at net.sf.saxon.Controller.transform(Controller.java:1621) 
    at ru.yandex.qatools.allure.data.utils.XslTransformationUtils.applyTransformation(XslTransformationUtils.java:52) 
    ... 25 more 
  • 我是否配置错误或者这是一个错误?
4

1 回答 1

1
  1. 此异常是由 Jenkins问题引起的。
  2. 您只应该安装 Jenkins 插件并在启用 NUnit 适配器的情况下运行您的测试。就这样。没有其他的。另请参阅以下问题中的详细信息。
于 2014-09-17T08:54:08.747 回答