【问题标题】:Silverlight Unit Testing [closed]Silverlight 单元测试 [关闭]
【发布时间】:2009-10-06 13:36:01
【问题描述】:

我搜索了此信息并看到了类似的问题,但没有一个与此非常接近的问题。如果我错过了一个,我很抱歉。我希望你能给我指明一个方向。我正在开发一个基于 Silverlight 的项目,我的团队终于开始着手实施单元测试。我和我团队的另一名成员负责为项目推荐一个单元测试框架。我们的基本标准是:

  1. 该项目包含标准 ASMX .NET Web 服务和 Silverlight 前端。如果可能的话,我们更愿意在整个过程中保持相同的测试属性,而不是将一组用于 Silverlight 测试,另一组用于其他代码。

  2. 与 VS 2008 的集成相当重要。如果可行,我们希望将其全部集中在一个屋檐下。我们很高兴能够从 VS 启动单元测试。

  3. 自动构建/签入测试。我们目前正在一个完全非自动化的 VS 2008/VSS 2005 环境中工作。我们正在转换为 SVN 进行源代码控制,我们的公司办公室将协助我们使用 MSBuild 来自动化构建过程。我们当然希望能够尽可能地融入这个环境。我还不确定这个过程的细节,因为我没有直接参与。如果您需要这方面的更多详细信息,请告诉我,我会看看能找到什么。

此时,我和我的同事正在研究 NUnit(以及可能的 Silverlight 选项)和 MSTest 以及 Jeff Wilcox 编写的 Silverlight 测试框架。虽然公司标准是 NUnit,但它们对其他选项持开放态度,因为没有任何其他团队在从事 Silverlight 工作。

Roy Osherove's Unit Testing Book 大约完成了一半,所以我对编写测试有了总体感觉。我没有嫁给一个特定的框架,但公司似乎对 NUnit 或 MSTest 最开放。如果可能的话,我还想获得一个很好的 MSTest 教程。

感谢您抽出宝贵时间。如果您需要我提供任何其他信息,请随时询问。

干杯,

史蒂夫

【问题讨论】:

  • 对于学习 MSTest,网上有很多资源,您有什么特别想在教程中学习的吗?
  • 主要是想了解一下工作流程、如何运行测试、属性引用、语法引用。

标签: c# silverlight unit-testing nunit mstest


【解决方案1】:

谨慎行事,并确保首先体验这些可能性。通过在每个测试中编写一些测试并弄清楚您的工作流程将是什么,最容易了解您正在查看的内容。

现有的 Silverlight 单元测试系统不如正式发布的、成熟的桌面 .NET 环境测试框架成熟,因此您的体验可能会有所不同。了解目前的 Silverlight 测试解决方案(实际在 Web 浏览器中运行)的存在是为了专门帮助人们在 Silverlight 平台的上下文中覆盖他们的代码和组件,而不一定是为了您可以通过集成的 Visual Studio 工具获得快速或简单的测试驱动开发和测试。

Silverlight 的沙盒安全模型使您可能期望的许多标准测试工具变得更加困难。

这也是一个不同的平台,真的,所以执行所有类型的测试可能没有意义(例如:对 Web 应用程序的“负载测试”......您可以“强调”Silverlight 应用程序,或者查看它的“性能”,但“负载测试”是关于对托管 .XAP 文件的机器施加压力,特别是对于 Silverlight 应用程序来说不是很有趣)。

如果您更关心测试业务逻辑和良好的集成,强烈考虑编写足够的可模拟/IoC 代码,以便您可以开发大部分应用并测试构建为常规桌面的版本。 NET 类库 ~ 然后你可以有一个仅在浏览器中的 Silverlight 测试子集。

给你的笔记:

  • 您是否真的要通过测试来测试 Web 服务调用?在 Silverlight 客户端代码和 Web 服务之间正确执行这种集成/客户端 + 服务器测试可能非常非常困难。

  • 对于 Silverlight 单元测试框架,您不会与 Visual Studio 2008 的 IDE 进行太多集成。您可以拥有一个 Silverlight 测试项目/应用程序,您可以按 F5 在 Visual Studio 中打开和调试并运行测试。但是,您将无法右键单击“运行所有测试”或测试用例管理工具。

  • Silverlight 单元测试框架的自动测试签入正在缓慢发展,一些人在 CodePlex 上编写了一组 Silverlight 测试运行程序。您可能不容易做到这一点,并且需要设置您的构建/测试机器,以便构建服务作为实际的用户进程运行,以便它可以打开和控制 Web 浏览器

将来,在 Silverlight Toolkit 团队中,我们将在未来发布某种程度的自动化测试支持以及简单的代码覆盖支持,但这些工具在今天(2009 年 10 月)尚不可用)

【讨论】:

  • 在过去的两个半月里,使用 Silverlight 进行单元测试的情况发生了根本变化吗?
【解决方案2】:

我不会推荐单元测试框架,但我可以警告说 MSTest 中的 Test 属性是密封的(无法在您创建的新自定义属性中继承),这与 NUnit 不同。在我看来,这个事实不应该太重要,因为我还建议,无论您最终使用哪种测试框架,都坚持使用其单一的 Test 属性,而不是创建您继承的属性。要表示特殊测试(例如您提到的 Silverlight),您应该添加一个 additional 属性。当您只想运行应用了您的自定义属性的测试(而不是所有单元测试)时,就会出现棘手的问题,并且需要自定义驱动程序进行测试。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2011-11-07
    • 2010-12-21
    • 2017-12-16
    相关资源
    最近更新 更多