首页 > 解决方案 > 如何将输出添加到 NUnit HTML 报告

问题描述

我通过控制台运行器使用 NUnit3。在我的测试用例中,我写了一些这样的输出:

  TestContext.Out.WriteLine($"Tested product: {productName}");
  TestContext.Out.WriteLine($"Backend: {backend}");
  TestContext.Out.WriteLine($"Tester Version: {testerVersion}");

这些出现在 .xml 报告中就好了:

<output><![CDATA[XLA Standard Version: 2.2.0
Backend: TCP
Tester Version: 2.0.0.0
Local RTC version: 2.0.0.0
]]></output>

但由于 .xml 结果几乎不可读,我通过将以下参数添加到控制台运行器来使用 HTML 转换:

--result=TestResult.html;transform=html-report-bootstrap.xslt

然后,这会将 .xml 报告转换为漂亮的 .html 报告。但遗憾的是,报告中缺少所有输出。我尝试了 NUnit 存储库中的不同 .xslt 文件,但似乎没有一个文件可以保留输出。

在 HTML 报告中出现的测试用例中创建输出的正确方法是什么?

标签: c#visual-studionunit

解决方案


您现在可能已经找到了解决方案,但我遇到了同样的问题并发布了我的解决方案,希望它可以帮助其他人。

输出语句在转换时正确包含在 html 文件中,并在单击测试名称时显示。但真正的问题是当我们点击测试名称时,什么也没有发生。Click 事件不起作用,因为文件的script标签bootstrap js在转换为 html 时未正确转换。

所以html-report-bootstrap.xslt在任何编辑器中打开,你会发现最后添加了 3 个 .js 文件,如下所示:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js" integrity="sha384-q2kxQ16AaE6UbzuKqyBE9/u/KzioAlnx2maXQHiDX9d4/zp8Ok3f+M7DPm+Ib6IU" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.min.js" integrity="sha384-pQQkAEnwaBkjpqZ8RU1fF1AKtTcHJwFl3pblpTlHXybJjHpMYo79HY3hIi4NKxyj" crossorigin="anonymous"></script>

但是当它转换为 html 文件时,所有 3 个 js 文件都添加了如下self-closing script标签,并且在 Chrome / Firefox 浏览器中不起作用。因此,测试名称上的单击事件不起作用。在此处查看此问题以获取更多信息。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js" />
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js" integrity="sha384-q2kxQ16AaE6UbzuKqyBE9/u/KzioAlnx2maXQHiDX9d4/zp8Ok3f+M7DPm+Ib6IU" crossorigin="anonymous" />
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.min.js" integrity="sha384-pQQkAEnwaBkjpqZ8RU1fF1AKtTcHJwFl3pblpTlHXybJjHpMYo79HY3hIi4NKxyj" crossorigin="anonymous" />

因此,作为目前的临时解决方案,我修改了html-report-bootstrap.xslt文件并在标签之间添加了一些 JS,如下所示:

//include the full path
<script src="jquery.js">let x;</script>
<script src="popper.min.js">let y;</script>
<script src="bootstrap.min.js">let z;</script>

因此,现在当它转换为 html 时,没有更多内容了self-closing script tag,当单击测试名称时,您可以看到输出语句,如下所示:

举报图片


推荐阅读