【问题标题】:Visual Studio TDD setupVisual Studio TDD 设置
【发布时间】:2011-07-10 16:52:08
【问题描述】:

我是一名刚接触 TDD 的 C# 开发人员,愿意尝试这种开发方法。

我当前的设置是 Visual Studio 2010 + Resharper(运行单元测试非常方便 - 设置单元测试会话,并且有运行和调试测试按钮)。

不过,我觉得可能有一些方法可以进一步加速 TDD(例如:保存测试文件时自动运行其中的测试)。

那么,使用 Visual Studio 的 TDD 专家 - 您能分享一些关于如何提高 TDD 流程效率的技巧吗?

【问题讨论】:

  • 不确定它与 r# 相比有多大变化,但我发现 TestDriven.net 作为测试运行程序不可或缺的工具,具有一系列良好的集成功能。
  • @Marc:R# 已经走过了漫长的道路;但是当您有超过 5000 个测试要运行时,TestDriven.net 很有价值。 R# 完全陷入困境并且会消耗大量资源(至少在 5 中,在 6 中没有尝试过)。
  • @vcsjones - 我已经进行了超过 10,000 次测试,ReSharper 在版本 5 或 6 中没有遇到任何问题。只是说你的里程可能会有所不同。

标签: c# visual-studio-2010 tdd


【解决方案1】:

工具

我通常将键盘快捷键绑定到上下文运行。您可以通过点击“工具”、“选项”在 Visual Studio 的选项中执行此操作,然后在“环境 -> 键盘”下找到“ReSharper.ReSharper_ReSharper_UnitTest_RunContext”。我相信 Resharper 6 会给它分配一个键盘快捷键,Ctrl+TR。我通常总是给它分配 Alt+;

这将在上下文中运行单元测试。所以如果你的光标在你刚刚写完的测试里面;该测试开始运行。如果光标在测试类/测试夹具内;运行。

您也可以制作一些 R# templates。我通常会制作一个名为Test 的模板,如下所示:

[Test] //NUnit Change attribute to [TestMethod] if MSTest.
public void $NAME$()
{
    $END$
}

我更喜欢 R# 模板而不是 Visual Studio 代码 sn-ps,因为您可以制作“解决方案”级别的模板,这些模板与解决方案文件一起存储在 XML 文件中。因此,当您签入时;您的所有同事也都可以访问模板;甚至是来自另一个工作站的您。

这样您就可以继续添加测试,而无需使用所有样板文件。您甚至可以为整个灯具制作文件模板。

让它流畅运行的真正诀窍是学习所有的键盘快捷键。一旦你了解它们并掌握它们;你的双手不假思索地开始做。添加/修改测试,您将开始自动按下上下文运行命令(无论您使用什么命令),甚至无需考虑。

持续集成

另一个不相关的工具;但是每个 TDDer 都应该熟悉的非常强大的是持续集成 (CI) 服务器。这将允许您在签入源代码控制时运行测试。最终,足够大的项目将获得 1000 套测试。自己一直运行它们变得不切实际。 CI 服务器,如TeamCity,将在您签入时在服务器上运行您的测试。然后它会在完成后报告所有损坏的内容;这样您就可以在它运行其他测试时继续工作。那些你可能没想到自己破产的人,但确实做到了。还有其他一些不错的免费提供;喜欢Hudson编辑:正如彼得在 cmets 中指出的那样; CruiseControl.NET 是一个开源的 CI 服务器,已经存在了一段时间。绝对值得一试。

我的典型准则是运行我认为相关的测试。我使用具有[Category] 属性的NUnit。我运行我认为受影响的所有类别;其余的交给 CI 服务器处理。

编码纪律

测试也是代码。它们需要重构;并保持。我见过很多人放弃测试,因为他们最终接受了意大利面条测试。让你的单元测试集中在一个小的、单一的单元上。当测试变得脆弱时,它会开始减慢您和您的团队的速度。一般来说,无需过多介绍;关注SOLID principles 有助于测试。

【讨论】:

【解决方案2】:

您可能想使用一些代码 sn-ps 进行测试。

http://www.codeproject.com/KB/dotnet/UnitTestCodeSnips.aspx

可能与 R# 存在一些冲突。

【讨论】:

  • 这是为 VS2005 编写的。 .Net 3/3.5/4 是否有任何版本?
  • 这也应该适用于 vs2008/2010 。据我记得他们是。
【解决方案3】:

我发现设置 NUnit 以在重新加载时自动运行测试的技巧非常棒。

Tools > Settings > Test Loader (tree) > Assembly Reload > Re-run last tests run

这将构建和运行测试压缩为一个步骤。

工具只会让你更快……除此之外,真正的提升来自于对你的 TDD 方法的反思。阅读、实践、反思和适应。

我的个人补充

  • 跟踪 TDD 节奏(红-绿-重构)
  • 跟踪在损坏的构建状态下花费的时间(编译/测试错误)
  • 在 IDE 中运行构建测试并查看结果
  • 在 IDE 中获取故障跟踪

将前三个作为 VS 扩展的一部分完成... WIP。

更新:这没有说明,但是...简化所有日常工作。例如使用工具进行重构,使用 code-templates/sn-ps 处理常用的代码模式,与您的 IDE 合二为一(所有常用操作的主键盘快捷键,将击键绑定到没有的操作)

【讨论】:

  • NUnit 的技巧确实非常好。我也想看看你正在开发的 VS 扩展,你能发个链接吗?
  • @w0lf - 扩展程序目前有一些粗糙的边缘......将在一周内发布到这里。
  • @w0lf - goo.gl/7P5kK 有扩展的链接和一些展示它的视频。如果您可以通过电子邮件将您的会话后屏幕截图连同您对会话的评论一起发送给我,那就太好了。 1 周延长到几个月.. :)
  • 我已经预览了第一个视频,我认为您在 Beacon 扩展方面做得非常出色。当我有足够的时间给予它应有的关注时,我会观看视频并尝试它。
  • @w0lf - 你的最后一条消息没有出现在我的通知中。谢谢你的美言……期待听到你的经历。回发。
【解决方案4】:

缩短构建时间。您将需要经常运行测试。以下是我要做的一些事情。

  1. 注意会减慢速度的预构建事件
  2. 确保只根据需要构建项目。在 Visual Studio 2010 中,检查工具 - 选项 - 项目和解决方案 - 构建和运行 - 仅在运行时构建启动项目和依赖项
  3. 确保保持测试快速运行。单元测试不应该做太多事情。在当前机器上应该可以每秒运行几十到几百次。
  4. 拆分单元测试和集成测试。更频繁地运行单元测试。当然,在提交到共享版本控制系统之前运行所有测试。

【讨论】:

  • 每秒 20 个?慢得要命。我更喜欢每秒至少 200 个。
  • 我很好。我见过太多需要 0.5 秒或更长时间的测试,称为单元测试。我应该强调他们应该运行的最慢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 2021-07-09
相关资源
最近更新 更多