我是一名大学生,用c#在这里和那里制作他的节目,主要是科学模拟。学习NUnit有什么用吗?我一直在听人们谈论它,但我并没有完全掌握它是什么。这是每个程序员应该使用的东西,还是更适合有很多人的大项目的东西?
由于
答案 0 :(得分:20)
测试是编写软件的重要组成部分 - 任何类型的软件。 无论您是编写一个小程序来排序数字,还是一个系统来启动太空飞船火星
现在过去,开发人员会编写代码,然后手动执行 - 通常在调试器中 - 来验证它是否达到了预期效果。这是测试代码的一种痛苦而乏味的方法。它不仅乏味而且痛苦 - 但它不可重复。这意味着每次进行更改时,您都必须手动重复测试,并希望您不会忘记任何事情或做一些不同的事情。 质量受损 - 并且有很多悲伤和哭泣。
最终,开发人员意识到他们可以编写一个单独的程序,通过运行它们期望它处理的条件来运行它们的代码,并让代码验证结果。 事情开始变得更好。这种测试方法通常称为 test harness 。
编写测试工具有所帮助,但是有很多重复的代码 - 有很多与运行和验证测试相关的基础结构。然而,一些真正聪明的开发人员说出了他们的说法:“我们不会一遍又一遍地编写锅炉板代码......我们将建立一个库来为我们做这件事。” 因此JUnit和NUnit(以及其他许多人)等单元测试工具诞生了。
这些库(和工具)可帮助您构建,组织和执行测试。它们提供了方便的方法来验证条件,捕获和跟踪异常,并报告哪些测试通过,哪些测试失败。最后,开发人员可以专注于重要的部分:编写测试和验证逻辑,以帮助确保他们编写的代码有效。这些测试是可重复的。它们可以作为automated build进程的一部分运行。随着新的失败点的发现和修复,它们可以传承下来并被其他人加入。在原始代码编写完成后的几个月和几年内,原始开发人员可以重新运行它们,以确保工作正常。
如果您计划成为任何级别的成功软件开发人员,在任何规模的组织中(即使只是您自己) - 您应该了解 - 并且 拥抱 < strong>单元测试。
以下是一些可以帮助您的资源:
答案 1 :(得分:7)
是的,你应该使用它。 (或任何试验跑步者)
测试是编程的一个非常重要的部分(在我看来),所以如果你(或其他人)改变了一部分代码,并且它碰巧会破坏某些东西,你的测试应该选择这个。
嗯,这就是我的看法,我还是单元测试的新手。
一个例子。
让我说我有一个方法
Add(int a, int b)
{
return a + b;
}
我的单元测试将是:
[Test]
public void Test001_TestAdd()
{
Assert.IsTrue(Add(1,3) == 4);
}
如果有人将添加方法更改为:
Add(int a, int b)
{
return a * b;
}
我的单元测试会失败,可能会挽救生命(如果你在医疗软件或NASA工作),或者停止潜在的错误:)
现在,如果they进行了单元测试,这可能不会发生,简单的问题,错过了。
答案 2 :(得分:3)
绝对。单元测试是现代软件开发中要学习的最重要的概念之一。
如果您的程序是科学模拟,企业应用程序等,那么无论您是在大型团队中还是单独编写代码(但在大型团队中与编译代码一样重要)都无关紧要。
开始进行单元测试(.net)的好书是Pragmatic Unit Testing in C# with NUnit
答案 3 :(得分:2)
每个程序员都应该学习它。现在,每个程序员都会使用它吗?可能没有,但无论如何他们都应该知道。
现在单元测试非常非常普遍,理解它的工作方式对于除了你现在正在编写的小爱好之外的任何项目都是必不可少的。利用您现在拥有的时间,为您的未来做好准备。还要了解模拟对象(相关)。
答案 4 :(得分:1)
如果您对Test-Driven Development感兴趣,NUnit是一款出色的工具。
有关TDD的一些注意事项,请参阅我的回答here。
我发现,如果你能获得一个ReSharper许可证(Visual Studio插件可以执行许多事情),那么单元测试的运行变得如此快速和简单即使对于一小部分工作,它们确实变得毫无疑问。
答案 5 :(得分:1)
单元测试有很多值,取决于您的工作以及您在单元测试的不同部分上工作的项目对您来说非常重要。
至少你应该学习单元测试的基础知识,以全面了解开发过程。随着时间的推移,你在大型项目上工作,你会发现单元测试是维护和发展大型代码库的重要组成部分。