我有一个现有的 VS 2005 Std .NET Compact Framework 应用程序,我想对其进行一些主要的重构。目前没有单元测试,但我想在弄乱代码之前添加它。我没有单元测试的实践经验,即使我知道这个理论(只是从来没有真正实现它;我知道:真丢脸:-))
以下是我目前正在思考的一些问题:
a) 作为初学者,我应该使用 NUnit 还是 NUnitLite(声称更容易使用)?
b) 我的目标应该是在移动设备上还是在桌面上运行测试(当然,特定于设备的代码除外)?目前桌面看起来更有吸引力,尤其是在自动化构建中包含测试......
c) 我要测试的类通常如何包含在测试项目中?我的应用程序是一个 .EXE 文件,即我不能像测试项目中的 .DLL 程序集一样引用它(或者我可以吗?从未尝试过这个......)。我检查了各种 NUnit 教程,但没有发现任何提及,或者一个教程建议将我要测试的类复制并粘贴到测试项目中(yuk!)。我应该链接到我的测试项目中的原始源代码文件吗?私有(private)方法或对其他类的依赖呢?
d) 我是否应该开始修改我的原始代码以实现更好的可测试性,例如使私有(private)方法公开,解耦等?这有点像在能够测试之前进行重构,这对我来说听起来不太好......或者在开始时根本不接触原始代码是更好的做法,即使这意味着更少的代码覆盖等?
e) 我应该研究大多数人使用的任何其他工具或插件吗?
在此先感谢您的任何答案(如果仅针对上述一项或多项内容,我也很感激答案)。
最佳答案
首先,我推荐你一本关于单元测试的好书:Pragmatic Unit Testing in C# .
它将向您介绍 NUnit,但更重要的是,作者将为您提供很多如何编写的建议 不错一般的单元测试。 xUnit 测试框架不是很复杂,您会很快适应它们的 API/工作流程。具有挑战性的是识别边界条件、减少耦合和设计可测试性的实际过程。它以电子书 (PDF) 或打印版的形式提供。
关于你的实际问题(本书也会给你一些答案):
关于unit-testing - NUnit(或 NUnitLite)和 .NET CF 的 "Getting started"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597886/