有谁能告诉我什么是.NET中的NUnit以及如何使用它?我听说使用这些工具可以改进应用程序的设计。这是真的吗?我在哪里可以得到关于这个主题的绝对初学者教程?
答案 0 :(得分:3)
NUnit是执行unit testing的框架。
如果您不熟悉单元测试,"Test Infected"可能是一个很好的介绍。它是关于jUnit(Java)而不是NUnit,但我不认为这对您来说应该是一个太大的问题。
有很多关于单元测试的书籍 - 强烈推荐Roy Osherove的"The art of unit testing"。
答案 1 :(得分:3)
NUnit是一个单元测试框架 - 它不是直接在你的应用程序中使用它,它允许你编写单独的测试套件来测试框架的组件。
单元测试是一种测试方法,您可以测试应用程序的小型单元,而不是将整个单元测试为一个单元。
这有助于改进应用程序设计的原因是它鼓励您以小单元编写应用程序,每个单元都与其他单元分离,因此可以进行测试。这强化了“关注分离”的概念;确保每种类型仅负责一项任务。
此外,很多人使用“单元测试优先”philosphy进行开发,在编写实际代码之前,您可以编写一些代码的测试。这里的想法是以下顺序:
这里的人们会参考这种RED-GREEN-REFACTOR方法
有很多关于如何在网络上进行单元测试的信息。 Just Goole“单元测试C#”。
但是,请查看NUnit's site上的文档(由于某些原因我写这篇文章),并查看与单元测试相关的其他SO帖子。
此外,here是一篇相当广泛的代码项目文章,虽然我没有深入研究它,所以我不知道它是否有用。
也许其他具有良好引用的人可以将它们添加为对本文的评论。
答案 2 :(得分:2)
您要问的是unit testing。用Layman的术语来说,不是通过运行它来测试你的应用程序,而是编写用于在小块中测试应用程序的代码。测试的一个例子是这样的:
[Test]
public void Get_All_People_Returns_Correct_Number_Of_People()
{
// setup
database.Add(new Person());
database.Add(new Person());
database.Add(new Person());
// test
Assert.That(database.GetAllPeople().Count(), Is.EqualTo(3));
}
在开始使用NUnit之前,您一定应该阅读更多有关单元测试,separation of concerns和良好应用程序设计的内容。当您的应用程序设计在不会相互干扰的小型可测试块中时,单元测试才真正有效。