单元测试和SharePoint开发

Mag*_*ndi 5 .net asp.net sharepoint moss unit-testing

我有兴趣为我正在进行的SharePoint开发工作编写单元测试.任何人都可以建议在MOSS中实施单元测试的实用方法吗?

请注意,任何第三方工具都必须是免费的(但不一定是开源的); 我工作的公司不会支付额外的工具费用.特别是,可以理解用于SharePoint的Typemock Isolator的任何替代方案.

谢谢,MagicAndi.

Rya*_*yan 5

一个有争议的替代方案 - 不要使用模拟!

而是进行集成测试,因为只要您使用的是您正在使用的SharePoint OM.

将尽可能多的逻辑放在可以从请求Context外部运行的库程序集中(重载构造函数传入HttpContext或SPWeb).

设置一个服务器/站点(最好是VM,这样你就可以轻松回滚并创建新的实例),仅用于单元测试并针对此运行.(VMWare服务器是免费的)

如果运行连续构建,则应该能够将其设置为自动运行并报告结果.或者,在PostBuild步骤中复制新的.dll后,使用开源nUnit或您选择的工具运行测试的一些批处理文件魔法.

缺点

  • 你有一些工作为你的测试设置数据(虽然它不仅仅是让模拟工作吗?)

  • 并非所有东西都可以这样测试

  • 可能需要更长的时间来运行,但如果作为持续构建的一部分运行是一个问题?

  • 团队需要更多的纪律,以避免踩到其他人的脚趾.

优点

  • 您对真正的SharePoint OM进行测试时遇到的所有令人困惑的不一致和特殊情况(如果您不友善,可能会将其称为错误;)

  • 谁知道当新的服务包/累积更新出现时,OM行为的哪些部分可能会巧妙地改变,这应该有助于捕获任何重大变化.

  • 当SharePoint 2010出现时,您将能够针对2007和2010运行测试,查看更改的内容,确保您的库适用于两个版本(如果适用于您的项目)

所有项目的权衡都是不同的,但对于我的项目,我更喜欢知道我正在测试真实情况的安全性 - 如果你愿意的话,叫我老式!