2009-12-22 91 views
4

我一直在使用MSTest进行单元测试,发现它有时会无故破坏我的构建。构建会在VS中失败,但在MSBuild中编译正常 - 错误如'option strict不允许IFoo转换为键入IFoo'。我相信我终于修好了,但是在虫子回来之后,努力让它再次消失,并且从MS那里得到了一点帮助,它在我口中留下了不好的味道。我也注意到,当看这个论坛和其他博客等,大多数人正在使用NUnit,xUnit或MBUnit ..我们在VS2008在工作BTW ..所以现在我期待探索其他选项..是否有人在整个团队中成功使用MSTest?

我正致力于让我们的团队开始进行TDD和真正的单元测试,并且计划进行一些培训,但首先想要制定一套标准工具&最佳实践。为此,我一直在寻找网络来为构建服务器和开发机器提供正确的基础架构......我在看typemock网站,因为我听说过他们的嘲讽框架的伟大的事情,并且注意到它似乎他们推动MSTest,甚至有一些人移动TO MSTest from NUnit ..

这使我重新思考我的决定..所以我想我问 - 是否有人使用MSTest作为其TDD基础设施的一部分?如果我想与构建/ CI服务器,代码覆盖或任何其他类型的TDD工具集成,我可能需要哪些已知限制?我确实在搜索这些论坛,大多数人发现人们将第三方框架与海誓山盟进行比较,甚至没有给予MSTest很多机会......为什么..有充分的理由?

谢谢你的建议

编辑:多亏了这个线程的答复,我已经证实了MSTest的工作,我的目的,并与CI工具摆好integreated和构建服务器。

但是没有人有任何使用FinalBuilder的经验?这是我希望我们用于构建脚本的工具,以防止与其他构建工具相比编写大量XML。在进行MS Test之前,我应该注意的任何限制?

我也应该注意 - 我们使用VSS =(我希望我们能尽快砍掉这一点 - 。希望作为,甚至第一步部分,设置这些基础设施的所有的

回答

2

Safewhere我们目前使用的MSTest用于TDD,和它的作品出来好了。

就个人而言,我喜欢IDE集成,但不喜欢的API。如果它没有能够xUnit.NET与VS测试运行整合,我们将迁移此后不久。

A至少与TFS一样,MSTest作为CI的一部分工作得很好。

总而言之,我发现MSTest对我来说工作得很好,但我并没有执着于此。

如果您正在评估模拟库,请参阅this comparison

+0

根据第9频道VS2010中的MSTest将允许您将其他测试框架集成到GUI运行器中。应该很棒! – Finglas 2009-12-23 12:35:22

+0

谢谢你的提示。 @Mark - VS2008 Dev版本中使用MSTest/TeamCity的局限性?我担心它可能会受到限制,因为我们不在TFS上......并且你在使用什么构建脚本?我希望能使用FinalBuilder,并希望它能够与MSTest/VS2008 Dev合作。 – dferraro 2009-12-27 06:39:02

+0

我们以前使用过TeamCity,限制是没有MSTest的内置支持,所以你必须编写你自己的MSBuild任务来执行测试套件。 – 2009-12-27 09:32:03

1

自从VS 2008问世以来,我一直在使用MS Test,但是我还没有设法在这里工作强壮任何像TDD或CI这样的东西,尽管我在Cruise Control中尝试了一下在本地盒子上构建CI服务器。

一般来说,我发现MS Test对于本地测试来说相当不错,但对于机构使用来说还是有一些痛点。

首先,MS Test增加了很多可能不属于源代码控制的内容。 .VSMDI文件特别烦人;只需运行MS Test即可创建1到5个任意位置,并将它们添加到解决方案文件中。这意味着源代码管理中的.SLN流失,并且这种流失很糟糕。

我理解其背后这些额外的文件应该点 - 跟踪测试运行的历史和这样的 - 但我不觉得他们什么,但一个单一的开发者特别有用。你应该使用你的构建服务和CI来做那种事!

其次,您要么必须有Team Foundation Server作为CI的一部分运行您的单元测试,或者如果您使用Cruise Control,则必须在构建服务器上安装Visual Studio的副本。净。详情请参阅this Stack Overflow question

一般来说,MS Test没有任何问题。但是,CI将不会如此顺利。

1

我一直在我们公司非常成功地使用MSTest。我们目前正在公司内部建立标准化的构建流程,到目前为止,我们在TeamCity上取得了很好的成功。对于持续集成,我们使用TeamCity配置。对于实际的发布版本,我们设置了大量的msbuild脚本来自动执行整个过程。

我真的很喜欢MSTEST因为IDE集成的,也即我们所有的开发者自动可以使用它无需安装任何第三方的依赖。我不会仅仅因为你遇到的问题而推荐切换。我已经走了一圈,我们去了nunit,然后又回来了。这些框架在一天结束时都是一样的,所以选择一个最容易让您的开发人员访问并开始使用的框架。

我怀疑你的问题可能是...听起来像一个晦涩难懂的问题,我以前有不正确的dll的引用(例如:添加明确的引用(通过浏览)到您的解决方案中的项目,并且不使用项目引用)会导致过时的问题,只有在完成签出或构建后才会出现。

,我发现之前,如果你有一个具有在表单.resx文件正在连载一些自定义类型的公共属性一些可视化组件或控件的其他犯罪嫌疑人真问题。我通常需要用一个表示SerializationVisibility.Hidden的属性来标记它们。这意味着IDE不会尝试为属性值生成setter(通常是一些对象图)。只是一个想法。可能会出路。

我相信这些工具,他们并不真正在说谎存在真正的问题。他们只是歪曲他们或报告他们是完全模糊的东西。这听起来像你这样。我怀疑这是因为错误信息没有意义,如果一切顺利的话,但它确实有意义,如果某段代码已经加载过时或在该点的修改版本的DLL。

+0

感谢您确认配置服务器和构建服务器在MSTest中正常工作。如果你有TeamCity,你为什么使用ms build脚本? FinalBuilder怎么样 - 你看过它吗?这是一个高级工具,可以替代nAnt/Ant/MSBuild,并且不需要复杂/耗时的手动创建的脚本。或者FinalBuilder与MSTest不兼容?任何人都可以证实它确实发挥它,或者如果有一些问题,如果如此限制?我打算使用FinalBuilder - 我还会编辑我的原始文章以包含此问题。再次感谢您的帮助所有 – dferraro 2009-12-27 06:30:27

+0

哦 - 这是非常重要的 - 你使用VS2008?因为我们没有团队基金会的豪华 - 并且怀疑这对预算是可行的...... – dferraro 2009-12-28 14:24:28

0

我已经成功部署了几个FinalBuilder安装,客户对结果非常满意。我可以强烈推荐它。

相关问题