【问题标题】:What is the easiest set of tools to get started with Source Control, TDD, and CI for Microsoft.Net 2008/2010 [closed]开始使用 Microsoft.Net 2008/2010 的源代码控制、TDD 和 CI 的最简单工具集是什么 [关闭]
【发布时间】:2010-03-04 14:40:35
【问题描述】:

我与其他三位开发人员和一位业务分析师一起编写内部业务应用程序。我们主要在 ASP.Net 中构建应用程序,并且以非常 2003 年的方式进行。仿佛回到时光机。尽管其他两位开发人员乐于学习新事物,但其中一位开发人员却不是。他是那种认为自己是城里最强大的开发人员的类型,如果他在 5 分钟内不理解一个新工具,那么他只需要构建自己的工具。他也不认可敏捷开发、TDD 或基本上任何非 Microsoft 支持的工具或方法。他甚至认为 SourceSafe 以外的任何东西的源代码控制都是危险的。值得称赞的是,他是一位出色的程序员,只是对软件开发不感兴趣。

所以我能达成共识的唯一方法是工具是否真的易于使用。一旦我们遇到一个障碍,他就会对“我告诉过你”之类的方式失去信心。

那么我应该使用哪组工具来让我们进入现代源代码控制系统、TDD 和 CI?在我的情况下,显而易见的选择似乎是微软的 TFS,但我怀疑我能否让我们节俭而冷漠的管理团队花掉额外的钱(他们已经认为 MSDN Pro 太多了)。

基本上,在 .Net 2008/2010 环境中使用源代码控制、TDD 和 CI 最简单的工具集是什么?

【问题讨论】:

  • 我真的开始倾向于推动 TFS,因为我认为让每个人都参与进来会更容易。我只是不明白 2010 年的成本。从 4 个 msdn pro 许可证到 TFS 有什么区别?如果您购买测试版,您是否只能获得测试功能?如果我们刚刚续订 Pro 订阅,我们可以升级吗?这应该是一个全新的帖子吗?

标签: asp.net .net tdd agile


【解决方案1】:

我不建议您一次将所有这些工具和方法都倾倒在您的团队中,请采取一些小步骤。一次介绍一个。有些是自然而然的。

【讨论】:

  • +1 用于婴儿步数。一心一意。不要惹恼别人。
  • 同意这一点,特别是如果团队中有一个吵闹的人。引入太多太快肯定会让他心烦意乱,并可能停止整个过程。
  • 不习惯在没有任何源代码控制的情况下工作的开发人员通常会发现调整很困难。试图让一个团队适应一套全新的工具可能会呈现出如此陡峭的学习曲线,这对你的团队来说似乎是一堵墙。我同意成功引入一种工具可能会导致未来接受更多工具。
【解决方案2】:

有很多不错的选择,但我个人可以推荐这些:

这些很容易上手,因为它们都是很好的产品,有合理的文档,并且被广泛使用(因此很容易获得帮助)。

【讨论】:

  • TDD 工具:TestDriven.Net 在我看来是必备工具!
  • 你们更喜欢 SVN 而不是 Git 或 Mercurial? NUnit 优于 xUnit? CruiseControl.Net 通过 TeamCity 还是 Hudson? NMock 起订量? NCover 优于 PartCover?
  • SVN 现在的集成故事比 Git 或 Mercurial 更好。 PartCover 是免费的,但 NCover 更好。无法评论 xUnit 或 Hudson。我更喜欢 TeamCity 而不是 CC.NET,但是一旦超过免费版,TeamCity 就会花钱。
  • @NeedAgileNow - 我不喜欢你列出的其他人,我只列出了我实际使用过的人。我绝对打算尝试您提到的几种替代方案,特别是 Moq / Rhino Mocks 和 Git(尽管我对 SVN 非常满意)。我只是还没开始。
  • Subversion 和 TortoiseSVN 与 Ankh!这就是我多年来一直在使用并喜欢它们的东西。
【解决方案3】:

如果不能达成共识,引入新工具总是很困难。专注于建立共识,而不是工具。

SVN 非常好(使用 Ankh 和 TSVN),但对于习惯 SourceSafe 的人来说可能有点令人惊讶。

TDD 是一种技术,而不是工具集,因此您需要书籍、博客等。对于支持它的工具,NUnit 或 MSTest。持续集成是必须的。 CruiseControl.Net 非常好(虽然最初配置有点困难)。还可以考虑 TeamCity。

你们有错误跟踪系统吗?

哦,如果您的管理团队如此冷漠,请考虑辞职。

更新:你说过他们不是“冷漠”而是“放手”。问题:他们真的不干涉,他们会让你继续前进吗?或者他们是“现状”——“它没有坏,所以不要修理它,也不要摇摆不定”?

【讨论】:

  • 好点。我想我需要先让我的老板加入。你推荐 SVN 而不是 Git 和 Mercurial?我对 TeamCity 印象深刻,尽管为 SQL Server 设置数据库连接有点痛苦。我们确实有一个用于跟踪错误的内部票证系统。公平地说,他们实际上是非常好的人,在大多数方面都非常适合为他们工作(例如,在家工作时非常灵活)。他们只是对钱很紧。冷漠可能是一个糟糕的词选择。我应该说他们对开发方法漠不关心。
  • 我对 Git 和 Mercurial 的问题是缺乏与 TSVN 相当的成熟版本。根据我的经验(几年前我推动了 VSS 到 SVN 的迁移),大多数 MS 堆栈人员更喜欢 GUI,而且(就他们而言)你无法比 Visual Studio 或 Windows Explorer 做得更好整合。
  • ...习惯了 SourceSafe 的人在看到 Git 或 Mercurial 时会发疯...
  • 是的,为了个人使用,我花了好几个小时试图弄清楚 Git。 “分布式”的性质一开始真的很难缠住我的大脑。试图说服所有人可能很困难。这家伙过去对非锁定结帐系统的想法感到不安。
【解决方案4】:

我认为您可以提出一个非常好的案例,即在过去的两年中,敏捷已完全被微软完全接受。我知道 Codeplex、MEF 和 ASP.NET MVC 团队都非常投入其中。我还认为 Visual Studio 和 Windows 7 团队的部分成员是敏捷的。还要考虑到 Visual Studio 2010 包括开箱即用的重构,这些重构在 TDD 的上下文之外并没有多大意义,并且敏捷是 TFS 的默认项目管理模板和完全不同的企业文化图片从过去的一年开始出现。

至于具体的工具。 TFS 可以用于源代码控制,但我发现它非常重量级和挑剔。其他人提到了 Subversion,但如果你担心 MS 的祝福,你可能会更好地直接跳到 Mercurial。它是一种更高级的 SCM,但现在 Codeplex 原生支持它并具有出色的 Windows 集成。我从未使用过它,但我对它的表弟 git 深爱着。

测试驱动开发:从 MSTest 开始,它不像任何人想要的那样流畅,但也不是世界上最糟糕的事情。我还推荐 MbUnit,它具有 NUnit 的所有功能以及对集成测试的一些良好支持,当您开始测试时,您可能会偶然编写这些测试。哦,如果你有自定义狂,我会敦促他看看 XUnit.Net。

Mocking:选择基本上是 Rhino Mocks 或 MoQ。 Here's a quick intro I wrote for Rhino Mocks 涵盖了所有基础知识。话虽如此,权衡似乎是为 RM 提供更多的文档,而不是为 MoQ 提供非常不易出错的语法。

Test Runners:如果您从 MSTest 开始,您会发现通过使用 TestDriven.Net、resharper 或 coderush 而不是内置的测试运行器,您可以在测试运行中获得显着的速度提升。话虽如此,不要低估独立的测试运行者。他们偶尔会非常好。我强烈推荐 MbUnit 附带的 Gallio Icarus 跑步者。

【讨论】:

    【解决方案5】:

    我想附和 George Mauer 所说的话,并建议从 MSTest 开始进行单元测试。它就在 Visual Studio 开头的框中,这将有助于您的事业,因为它是“MS 有福的”。

    我会从单元测试开始,然后从那里开始,经过几个月的“看看我们现在的生活是多么轻松,我们已经让这些测试自动化了”,我会把它提升一个档次。考虑在混合物中添加 Selenium 或 WatiN 之类的东西。一旦您开始使用它,请启动您的 CI 服务器。 “如果我们不必手动开始所有这些测试不是很好吗?...”

    我想一个像样的 SCM 可能是一个症结所在。 SourceSafe 总比没有好。也许自己开始使用 Mercurial 或 Git?向那些愿意改变的人展示好处,最终当他周围的其他人想要转换时,你顽固的开发者会出现。希望如果他是少数派,他会发现更难大喊大叫。

    查看http://www.viget.com/extend/effectively-using-git-with-subversion/ 了解混合不同 SCM 的想法。

    我还想 +1 mxmissile 说要慢慢来。我想你会发现很难一口气介绍所有这些变化。如果你不习惯的话,一开始要接受很多。尝试选择你最薄弱的部分,或者将增加最大价值并从那里建立起来。

    祝你好运!

    【讨论】:

    • 我不确定如果我使用与团队中其他人不同的 SCM 会如何工作。尽管我们有“拥有”的项目,但在项目上仍有相当多的合作。
    • @NeedAgileNow 确实,这可能有点困难,请参阅我的编辑,参考此页面:viget.com/extend/effectively-using-git-with-subversion 了解一些想法
    【解决方案6】:

    让我对 TDD 产生兴趣的一个工具是 TestDriven.Net,它将测试结果放在输出窗口中。我将它映射到 F8 键,生产力提升非常好;编写一个测试,按 F8 并在输出窗口中查看此结果。

    我还必须区分进行单元测试和进行 TDD 的一个建议。我发现 TDD 很难推动团队发展,而;单元、集成或功能测试更容易销售。日复一日地进行手动测试可以节省一个小时的大量测试,这是一个巨大的胜利。

    一段时间后,如果一些新想法对他们的日常生活有所帮助,人们就会开始欣赏这些想法。然后,您将能够引入构建服务器,并远离 SourceSafe。

    【讨论】:

    • 我的键绑定是:Ctrl+R, T - 运行测试(测试编辑器模式); Ctrl+R, R - ReRunTestsWithDefault (Global) - 这个超级好用 Ctrl+R, Ctrl+T - ReRunTestsWithDebug (Global)
    【解决方案7】:

    在 .NET 环境中,最常使用 Microsoft Visual SourceSafe。 (但它成本)。接下来,您可以选择 SVN 或 GIT。 Git 是较新的(并且越来越受欢迎)。一旦你得到它,它比 SVN 更容易使用。

    http://git.wiki.kernel.org/index.php/GitSvnComparison 可能会帮助您做出决定。

    【讨论】:

    • Visual SourceSafe 是一只恐龙。我想说现在公司环境中的每个人都在使用 TFS。
    • 直到几个月前,SourceSafe 在我们的业务中运行良好大约 5 年。我们已经开始遇到奇怪的问题,我认为是时候利用这个机会继续前进了。
    • SourceSafe 因非常不安全而付出代价。不使用。 codinghorror.com/blog/2006/08/…
    • @Slavo 我会投入大量资金,因为 VSS 的采用率仍然比 TFS 高得多。 TFS 非常棒,我利用它的东西仍然很少,但它不是免费的。 Microsoft 确实在 2010 年更改了 TFS 的许可,如果您拥有带有 MSDN Premium 的 VS Team System 的副本,它将更有效,并且对于 5 个用户无需额外费用。
    • 我前段时间在阅读svnvsgit.com doc 后在git wiki 页面上发布了一个推荐。看来wiki页面上的比较很不公平。
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2015-03-09
    • 2010-09-14
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多