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