【发布时间】:2010-10-09 12:28:24
【问题描述】:
我想知道如何使用 Visual Studio 2008 (.net 2.0) 在现有(相当大的)应用程序中实现单元测试。
我了解为现有/遗留代码开发单元测试是不现实的,但我希望对代码进行测试。
我找到了大量关于如何编写代码测试的示例,但没有找到关于如何在现有项目上从头开始设置以及如何将其集成到开发周期中的示例。
【问题讨论】:
标签: .net asp.net unit-testing
我想知道如何使用 Visual Studio 2008 (.net 2.0) 在现有(相当大的)应用程序中实现单元测试。
我了解为现有/遗留代码开发单元测试是不现实的,但我希望对代码进行测试。
我找到了大量关于如何编写代码测试的示例,但没有找到关于如何在现有项目上从头开始设置以及如何将其集成到开发周期中的示例。
【问题讨论】:
标签: .net asp.net unit-testing
简单的方法:
为了便于组织,请为解决方案中的每个项目至少创建一个命名空间,例如 UnitTest.Project1、UnitTests.Project2、... 根据项目的大小,向命名空间添加更多级别。
这种方式测试项目是解决方案的一部分。如果你使用一些持续集成工具,那么测试可以在每次提交到源代码存储库时自动执行。
编辑:
关于创建单元测试时对 MS 单元测试框架问题的评论,有一个已知问题:"Create unit test" wizard does not work。看起来有不受支持的项目类型会阻止单元测试向导正常工作。我刚刚尝试了一种具有一个 F# 和多个 C# 项目的解决方案。我添加了单元测试项目并尝试添加测试。在我卸载 F# 项目之前,测试向导一直存在问题。然后一切正常。
【讨论】:
如果你想对现有代码进行单元测试,我强烈推荐阅读这本书:Working Effectively with Legacy Code。这也是一本关于一般单元测试最佳实践的好书。
可以对现有项目进行单元测试,但您必须在各处进行一些调整以使代码可测试。过多的依赖通常是问题所在。
编辑(在您发表评论后) 如果您真的想将单元测试嵌入到您的开发周期中,那么您应该选择 TDD (Test Driven Development)。这里的目的是首先编写单元测试,这样你就可以很好地理解你的类会做什么。当然,这些测试会失败,但目标是让它们一个一个地工作。谷歌一下 TDD,那里有很多信息。
【讨论】:
让测试与现有代码一起进行的一种简单方法是制定一个在发现错误时编写测试的策略。
即
【讨论】: