单元测试显示输出

时间:2011-03-14 18:31:57

标签: unit-testing

我搜索了单元测试工具,我发现合适的一个是NUnit,我认为它很好但我的问题是这个工具只显示测试方法结果(通过或失败)而且我需要显示不仅通过或失败输出。如何使用NUnit显示输出或者是否还有其他单元测试工具?如果不支持,请建议我如何解决。

欢迎所有想法

4 个答案:

答案 0 :(得分:4)

在NUnit的底部栏上,您可以单击“文本输出”,它将显示所有调试和控制台输出。

答案 1 :(得分:4)

管道System.Console的输出将适用于NUnit,但它不是您的最佳选择。

对于传递测试,您不需要查看控制台输出以验证测试是否已通过。如果你是,你做错了。测试应该是自动化和可重复的,无需人为干预。手工验证不会扩展并产生误报。

另一方面,为失败的测试提供控制台输出是有帮助的,但它只提供可以通过附加调试器推断出的信息。将控制台日志记录添加到您的应用程序中需要付出很多额外的努力。

相反,请确保您的错误消息有意义。编写测试时,请确保您的断言是明确的。始终尝试使用与您声明的对象非常吻合的断言,并提供解释为什么测试很重要的失败消息。

例如:

// very bad
Assert.IsTrue( collection.Count == 23 );

当测试失败时,上述断言并没有提供太多帮助。当NUnit格式化断言的输出时,这个断言对你没有帮助,因为它会说“期待< True>但是< False> ”。

更合适的断言将提供更有意义的测试失败。

// much better
Assert.AreEqual(23, collection.Count, 
               "There should be a minimum of 23 items by default.");

这提供了更有意义的失败消息:“Expecting< 23>但是< 0&gt ;:默认情况下应该至少有23个项目。

答案 2 :(得分:0)

这取决于您希望从测试中输出数据的位置。 我相信你从File, Log, Console, Debug输出中提到了另一个东西。 作为替代NUnit允许在常规测试输出流中输出任何消息,只需使用以下实用程序方法:

成功测试

Assert.Pass( string message, object[] parms );

对于测试失败

Assert.Fail( string message, object[] parms );

更多详细信息,请参阅here

答案 3 :(得分:0)

这个帖子在提出问题之后就是loooooong,但是想要插入。是的,你可以在单元/集成测试中完成很多工作并且可能完成你需要的大部分工作。所以,我同意,尽可能多地在你的测试方法中做。

但有时候,提供一些输出很有用。特别是如果您需要进一步验证结果,并且无法通过单元测试完成验证。想想您的开发/测试环境没有或有限访问的外部系统。

例如,假设您正在使用webapi来创建声明,而响应是新的声明编号。但是api没有公开方法来获取声明,并且您需要验证在进行webapi调用时创建的其他一些数据。在这种情况下,您可以使用输出的索赔号手动检查远程系统。

FWIW