技术开发 频道

用于构建SharePoint解决方案的10个非常好的实践

  5.测试代码,并管理依赖项

  单元测试框架和相关的测试工具的广泛采用到 SharePoint 开发自然了它的方法。 单元测试和集成测试是两个主要的测试类别的。 这两种测试类型表现出不同的特性,,需要使用不同的工具和技术。

  时编写单位 或非服务器测试时,它的视为最好模拟与替换如存根或模拟的外部相关性。 通过模仿外部相关性的对象中的传入,测试成为更快、 更关注您要测试此问题。 要有效,此方法需要您按照可测试的、 面向对象的设计的原则,或为了隔离紧密结合的组件,您的解决方案中使用一个专用的框架。

  确定的行为和独立的基础结构并确保您具有用于在隔离测试这些策略的业务规则。 找出与 SharePoint、 一个的数据库或 Web 服务交互操作,可以引入该存储库模式中抽象出后端系统的详细信息。 通过取反值的控件 (IoC) 和相关性注入 (DI) 原则,可以将这些存储库对象传递到更高级别的组件。

  单元测试处理用 SharePoint 对象模型时,其他主要挑战的 SharePoint 开发人员图标。 简单地说,在隔离测试这些组件是一项重要的任务。 它是有限的数量的接口和抽象以及大量的密封类的直接结果,使用内部的依赖项或不公共构造函数的类。

  配置为处理这些缺点的一个产品是 TypeMock Isolator,用于 mocking 密封、 具体、 静态,或内部构造的类的一个商业 mocking 框架。 对于为适用其他 mocking 框架,必须遵守模式和我们已经有 eluded 到的原则。

  TypeMock Isolator 或其新的 SharePoint 特定于版本的 SharePoint,Isolator 的将解决这些限制,并不依赖于 SharePoint 的运行实例允许更高代码覆盖率。 模式和实践 (P&P) 团队还使用 TypeMock Isolator 在其 SharePoint 指南参考体系结构 .

  有些时候 您将不得不编写依赖于 SharePoint 对象模型的集成测试。 好的做法来管理服务器独立于的单元测试是与服务器相关的。

  可以在 Visual Studio 中使用测试管理器中的测试列表编辑器来分隔您的单位和集成测试。 对于是实例可以创建两个列表的测试: 服务器依赖于和服务器独立于 (参见 图 6 )。 此方法允许您选择的集测试根据上是在服务器上运行。 


图 6 </a0>-测试列表编辑器显示分类的测试列表

  在 Visual Studio 安装在服务器的情况下,可以运行和调试在 IDE 中的测试或运行服务器依赖于测试使用 MSTest.exe 命令行工具。 遗憾的是,MSTest 不运行除非在服务器上安装了 Visual Studio。 我们希望是 MSTest 的未来版本将不包含此大量的依存关系。

  MSTest.exe 可以指定您要通过命令行参数运行的测试。 您在运行 MSTest.exe 则必须指定该 /testcontainer 或 /testmetadata 选项。 通过 /testmetadata 选项可以指定哪些测试将运行。 是例如要运行所有的服务器的相关测试,请键入:

MSTest /testmetadata:SPTips.vsmdi /testlist:ServerDependentTests

 

  若要运行服务器依赖于测试中的特定测试,键入:

MSTest /testmetadata:SPTips.vsmdi /test:GetTasks_ShouldReturnTasks

  6.连续集成和自动的生成

  保存代码在源代码管理中、 依赖于连续集成,和自动执行生成过程是有效版本的高质量代码资产的基本步骤。 SharePoint 使此环境质询,设置至少。 对于此提示,最重要的起始点是在" 团队开发概述 "主题。

  更高版本在概述,将看到 SharePoint 指南主题"如何: 创建与 Team Foundation Server 生成的自动的生成和部署解决方案" 本主题重点讲述如何创建构建和部署解决方案的生成目标。 虽然此方法具有现场,它不使用在 TFS 生成和 SharePoint 服务器不驻留在同一的环境中时通常是在企业。 构建使用目标在解决方案包会限制用于自动的生成环境的包的使用,并因此不鼓励早期开发和测试的开发人员的程序包。

  此替代方法是使用 Visual Studio 中的生成后事件。 可以执行相同的打包步骤,作为 MSBuild 目标,并允许开发人员能够构建程序包部署到其自己的沙箱环境设置生成后事件。 此方法还使用第三方工具 (如 WSPBuilder 和 STSDEV。

  部署到企业时, 可能还需要考虑版本控制解决方案包。 将当前的内部版本在解决方案版本是一个的方法。 这通过使用 AfterBuild MSBuild 事件中或生成后事件运行的自定义应用程序代码简化。 此外应考虑的解决方案 ID 自动的生成并是否生成新的 ID 与每个版本。 此决定会影响您在以后升级解决方案的能力。 作为一般的规则程序集版本更改生成新的解决方案 ID。 否则,保持解决方案 ID 相同的版本 ID 是静态之间生成。

  而不是您可以从获取的重复信息, SharePoint Server 开发人员中心 我们将关注如何进一步简化自动的生成过程的补充此提示。 SharePoint 指南主题中"如何: 使用 Team Foundation Server Team Build,创建自动的生成和部署解决方案"P&P 团队假定您正在使用 VSeWSS / 扩展。

  SharePoint 开发人员工具包如 WSPView 面板,允许您在的动态配置您的解决方案的功能的好除了 VSeWSS 时我们已经发现不适合较大的实现或敏捷开发方法的团队的媒体。

  P&P SharePoint 指南团队文档指出 VSeWSS 提供一键式部署和 F 5 调试。 单击部署功能当然 VSeWSS 的一部分,但 F 5 调试功能有更多处理到您的 SharePoint 的实例必须运行本地的 Visual Studio 的事实。 这是安装 VSeWSS 的要求。 虽然使用并使用获取安装在工作站上的 VSeWSS 注册表黑客时在工作站上安装扩展的好处的大多数会丢失。

  文档还指出很多工具 (如 WSPBuilder 和 STSDEV 要求开发人员能够维护 feature.xml 和 Web 解决方案包中的 SharePoint 解决方案打包的 manifest.xml 文件。 实际上,这些工具不断发展。 例如,WSPBuilder 现在包括允许 feature.xml 和 Visual Studio 2005 和 2008 中的 manifest.xml 易于维护的扩展名。

  在确定如何构造 SharePoint 项目 VSeWSS 后会非常有用。 是例如,可以使用 VSeWSS 项目类型确定 Web 部件或 SharePoint 工作流项目的结构。 一旦您知道如何,考虑该信息并将其移动到无处不项目类型。 VSeWSS 用于大型项目的媒体,主要问题如下所示:

  扩展名被为了在 SharePoint 服务器上运行的 Visual Studio 的实例安装。 因此,它们 WSS 上有一个硬依赖项。

  尚未安装 VSeWSS 开发人员不具有特殊的项目类型 VSeWSS 创建的并且将无法打开依赖于它们的项目。

  重新生成解决方案进行更复杂的 VSeWSS。

  指南文档建议将其他的方法是手动创建 SharePoint 解决方案文件每个 Visual Studio 解决方案、 以及使用部署清单 manifest.xml。 但是,工具 (如 WSPBuilder 允许自动完成您的版本中的此步骤。

  成功的自动生成密钥以是:

  使用标准的 Visual Studio 项目类型 (即,类项目的 Web 部件),,这样所有开发人员可以轻松打开一个项目。

  结构代码项目,以便解决方案打包已集成到在的项目中,如 图 7 所示。 就不需要创建一个单独的部署项目。

  设置生成后事件运行 WSPBuilder 或另一个自动解决方案构建工具来创建 SharePoint 解决方案文件。 此方法适用同时进行本地部署解决方案和自动的生成过程。

  使用宏条件控制被调用,具体取决于正在生成您生成后事件的部分。

  一个自动的生成进一步复杂的 InfoPath 项目中。


图 7 到 Web 部件项目代码集成的解决方案打包结构下载

  不部署 到全局程序集缓存 (GAC) 直到您将移到集成环境上。 程序集保持 BIN 文件夹使调试自定义 SharePoint 应用程序得更容易。 有不适合 (如与 SharePoint 事件处理程序和 SharePoint 功能的此模型的特定项目类型。 通过 BIN 文件夹中放置兼容的程序集,共享的开发环境中的开发人员不必每个部署后 endure 频繁 IIS 重置。

  从该 BIN 运行 SharePoint 的程序集的某些指针是:

  修饰 [assembly:System.Security.AllowPartiallyTrustedCallers] 属性的程序集。

  配置自定义代码访问安全性 (CAS) 策略或将 Web.config 设置为完全信任中,如下所示:

<system.web>
  
<trust level="Full" />
</system.web>

 

  (注意将信任级别设置为完全。 只适用于本地或内部开发的代码的资产将最终部署到 GAC 中) 登录到 GAC 中的最终部署程序集。

0
相关文章