2013-04-06 66 views
2

我正在通过Specflow为QA编写测试代码。 (例如:Assert.IsTrue(foo,“foo is not true,test could not proceed”))以及失败消息。当一个步骤或其中的一部分失败时,我们会抛出一个包含错误消息的Exception,并将其捕获到顶层。发送测试失败消息给测试人员用Specflow在C#

问题是现在“失败消息”包含非常长的异常消息(包含确切的文件,方法和类名 - 对测试人员不重要的信息)。

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

+0

行为,你可以提供一个小样本,具体在哪里,你处理断言失败? – oleksii 2013-04-06 21:10:19

+0

断言有时会失败,这意味着 - 当断言失败时,系统中存在一个错误。 例如:Assert.IsTrue(ServerResponseIsOk(),“服务器不正常,请检查”) – Wasafa1 2013-04-07 06:25:37

+0

不清楚哪个代码会引发异常,您或SpecFlow /单元测试框架。如果这是你的代码,那么在异常细节中没有什么不好的。最终用户会看到一个特定的测试失败,可能只关心构建是绿色还是红色。你作为开发人员会关心细节的细节。 – oleksii 2013-04-07 09:01:17

回答

0

这听起来像你只是不希望堆栈信息,当断言失败。许多人在尝试调试时觉得这很有用,所以我可能会建议尝试隐藏它,而不是摆脱它。

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

它列出了所有测试,并将它们显示为红色或绿色,并且有[show]/[hide]选项,只有您关心它时才允许显示更多信息。您可以修改报告生成器以根据测试输出执行任何操作,但我真的建议将它保留在那里。

以下链接显示您将如何设置。我们在CI中运行这个脚本,但是你可以写一个批处理脚本,甚至通过C#来执行它。

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

NUnit的亚军

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报告,对测试人员阅读和