【问题标题】:New to Unit Testing单元测试新手
【发布时间】:2010-10-09 12:28:24
【问题描述】:

我想知道如何使用 Visual Studio 2008 (.net 2.0) 在现有(相当大的)应用程序中实现单元测试。

我了解为现有/遗留代码开发单元测试是不现实的,但我希望对代码进行测试。

我找到了大量关于如何编写代码测试的示例,但没有找到关于如何在现有项目上从头开始设置以及如何将其集成到开发周期中的示例。

【问题讨论】:

    标签: .net asp.net unit-testing


    【解决方案1】:

    简单的方法:

    • 选择一种单元测试框架(Nunit、MbUnit、Xunit、VS 单元测试框架……)
    • 为您的解决方案中的单元测试添加项目(例如 UnitTests)。
    • 开始编写测试。

    为了便于组织,请为解决方案中的每个项目至少创建一个命名空间,例如 UnitTest.Project1、UnitTests.Project2、... 根据项目的大小,向命名空间添加更多级别。

    这种方式测试项目是解决方案的一部分。如果你使用一些持续集成工具,那么测试可以在每次提交到源代码存储库时自动执行。

    编辑:
    关于创建单元测试时对 MS 单元测试框架问题的评论,有一个已知问题:"Create unit test" wizard does not work。看起来有不受支持的项目类型会阻止单元测试向导正常工作。我刚刚尝试了一种具有一个 F# 和多个 C# 项目的解决方案。我添加了单元测试项目并尝试添加测试。在我卸载 F# 项目之前,测试向导一直存在问题。然后一切正常。

    【讨论】:

    • 这可能是一个愚蠢的问题,但我认为单元测试已经“烘焙”到 VS 2008 IDE 中,那么您需要单元测试框架来做什么?
    • 你是对的。我忘记了那个,因为我使用 NUnit 只是因为它是 4 年前我开始单元测试时最好的选择。
    • 我试图通过在右键单击类时使用“创建单元测试”上下文选项来添加单元测试,但总是遇到错误(现在不记得了)但是我怀疑它与视觉源安全干预有关。
    • 别忘了一个模拟框架!起订量浮现在脑海中...code.google.com/p/moq
    【解决方案2】:

    如果你想对现有代码进行单元测试,我强烈推荐阅读这本书:Working Effectively with Legacy Code。这也是一本关于一般单元测试最佳实践的好书。

    可以对现有项目进行单元测试,但您必须在各处进行一些调整以使代码可测试。过多的依赖通常是问题所在。

    编辑(在您发表评论后) 如果您真的想将单元测试嵌入到您的开发周期中,那么您应该选择 TDD (Test Driven Development)。这里的目的是首先编写单元测试,这样你就可以很好地理解你的类会做什么。当然,这些测试会失败,但目标是让它们一个一个地工作。谷歌一下 TDD,那里有很多信息。

    【讨论】:

    • 是的,我知道在这个阶段实施它有点徒劳,但我们有机会作为一个新项目重新开始......因为架构的变化,我想从一开始就实施单元测试并认为我现在抢先一步......(因此问题)
    • Gerrie,是的,TDD 是我们目前正在研究的东西,部分原因是我现在想实施一些单元测试,
    • @CodeKiwi:Feathers 是我提到的这本书的作者。真的,如果你想尝试对现有代码进行单元测试,那就去买这本书吧。
    【解决方案3】:

    让测试与现有代码一起进行的一种简单方法是制定一个在发现错误时编写测试的策略。

    • 查找错误
    • 编写重现错误的测试
    • 修复

    【讨论】:

    • 只是出于兴趣,假设您有单一用途的方法(或接近单一用途),每种方法通常有多少测试(球场),
    • 对一些“平均”或“标准”参数集进行一次测试,并确保对所有已知的边界条件(空参数、最大值/最小值……)进行测试。跨度>
    • +1 并为任何进入的新代码编写测试,而不仅仅是针对错误。随着时间的推移,它会加起来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多