从NUnit向TestResult.xml文件添加更多信息

时间:2020-03-05 18:47:51  来源:igfitidea点击:

我希望能够向单元测试中添加一个"消息",以便它实际上出现在NUnit生成的TestResult.xml文件中。例如,这是当前生成的:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" />
</results>

我希望能够有一个添加属性(或者视情况而定的节点),例如:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." />
</results>

想法是上面的"消息"将以某种方式在测试方法本身中定义(在我的情况下,是在运行时生成的)。我缺少某处可以进行这样的操作的属性吗?

解决方案

回答

这可能遗漏了要点,但是如何命名测试,以便它们指示要测试的内容,那么我们甚至可能不需要此消息。

如果证明绝对必要,我认为我们需要生产自己的testrunner,它将(从头顶)读取TestCase的其他属性并将其添加到输出中。

回答

我在运行时看不到任何可用的东西,但是我们可能需要研究几个功能:Description属性和Property属性都将文本添加到XML输出文件中。不幸的是,它们都是在编译时定义的。

回答

在最新的NUnit版本中,我们可以执行以下操作:

Assert.AreEqual(250.00, destination.Balance, "some message here");

其中"此处有一些消息"可以是常量消息,也可以是在运行时生成并存储在字符串变量中的消息。但是,如果断言失败,这些消息将仅出现在输出中。但是,通常,我们只需要有关失败测试的信息,因此我建议通过添加前面的每条消息,然后在所有所有断言中使用该字符串变量作为消息来构建字符串。这使我们可以从失败的测试中获取所需的所有信息。