2

我正在通过 Specflow 为 QA 编写测试代码。

目前,测试充满了断言(例如: Assert.IsTrue(foo, "foo is not true, test could not continue") )和失败消息。当一个步骤或其中的一部分失败时,我们会抛出一个带有错误消息的异常,并在顶层捕获它。

问题是现在“失败消息”包含一个非常长的异常消息(包含确切的文件、方法和类名——这些信息对测试人员来说并不重要)。

我想知道是否有办法忽略顶层异常消息的特定部分。或者也许使用另一种策略,而不是使用异常 throw\catch 和 Assertions。

4

1 回答 1

0

听起来您只是在断言失败时不想要堆栈信息。许多人在尝试调试时发现这很有用,所以我可能会建议尝试隐藏它而不是摆脱它。

由于 SpecFlow 所做的只是将功能文件转换为测试(我们现在假设为 nunit),因此要运行测试,您只需像往常一样运行 NUnit。如果您使用 nunit-console.exe 执行,SpecFlow 开箱即用提供了一个 html 报告生成器来执行您的要求。如果这就是您正在使用的,这也适用于 mstest。

它列出了所有测试并将它们显示为红色或绿色,并有一个 [show]/[hide] 选项,允许您仅在您关心它时显示更多信息。您可以修改报告生成器以对测试输出做任何您想做的事情,但我真的建议将其保留在那里。

下面的链接向您展示了如何设置它。我们在 CI 中运行它,但您可以编写一个批处理脚本,甚至可以通过 C# 执行它。

https://github.com/techtalk/SpecFlow/wiki/Reporting

NUnit Runner

nunit-console.exe /labels /out=TestResult.txt /xml=TestResult.xml bin\Debug\BookShop.AcceptanceTests.dll
  • 输出文件有 console.WriteLine 信息
  • xml文件有测试结果

SpecFlow 报告生成器

specflow.exe nunitexecutionreport BookShop.AcceptanceTests.csproj /out:MyResult.html
  • 生成供测试人员阅读和操作的 html 报告
于 2014-08-29T02:55:59.930 回答