2011-03-14 84 views
13

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

所有的想法都欢迎

回答

4

在NUnit的底部酒吧,您可以单击文本输出和显示所有调试和控制台输出。

+0

确定,当我调用方法getEmp(10),它会返回Emplyee对象与名字及姓氏和职位及年龄和......所有members.That的我需要 – 2011-03-14 18:59:09

+1

你可以使用System.Diagnostics程序。 Debug.Write或System.Console.WriteLine将您感觉的任何信息写入NUnit Text输出。 – 2011-03-14 19:02:02

+0

我可以获取返回的对象的属性,因为我不知道该对象。我需要打印对象(员工或公司或...)中的所有属性 – 2011-03-16 18:33:40

5

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

对于通过测试,您不需要查看控制台输出以验证测试是否已通过。如果你是,你做错了。测试应该是自动的,可重复的,无需人工干预。手动验证不会缩放并产生误报。另一方面,有失败测试的控制台输出是有帮助的,但它只会提供否则可以从附加调试器推断的信息。这是很多额外的努力来将控制台日志记录添加到您的应用程序中,但收效甚微。

相反,请确保您的错误消息是有意义的。在编写测试时,确保你的断言是明确的。始终尝试使用与您正在声明的对象非常接近的断言,并提供解释测试重要性的失败消息。

例如:

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

上述说法并没有真正提供多少帮助时,测试失败。当NUnit格式化断言的输出时,这个断言不会帮助你,因为它会表示类似于“期待<真>但是<假>”。

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

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

这提供了一个有意义得多失败消息:“期待< 23>但< 0>:应该在默认情况下是最小的23项

+0

看到你的回应后,我想知道我是否误解了,他是否想要他在代码或测试输出中生成的输出?它只是说输出,所以我可能一般会假设输出。 – 2011-03-16 12:55:16

+2

我认为这也是一般输出。我的观点是,如果你必须依靠一般输出,因为通过/失败是不够的,你应该重新考虑你的测试方法。 – bryanbcook 2011-03-16 15:42:51

+0

不,我需要我的输出不是一般output.You是正确的耶稣,我试图测试它 – 2011-03-16 18:31:01

0

这取决于你在哪里想要从测试中输出数据。 我相信你从File, Log, Console, Debug输出中提到了另一个。 作为替代NUnit允许输出的常规测试输出流中的任何消息,只需要使用下面的实用方法:

对于成功的测试

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

对于失败的测试

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

更多细节见here

+0

这些方法结束测试。 – 2015-11-04 06:30:51

0

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

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

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

FWIW