【问题标题】:Unit Testing for Smart devices using framework 2.0使用框架 2.0 对智能设备进行单元测试
【发布时间】:2010-01-19 04:49:16
【问题描述】:

VSTS 2008 (Visual Studio Team System) 带有内置的单元测试功能。我们可以添加一个测试项目来对智能设备项目进行单元测试。当我的智能设备项目不使用 Framework 3.5 而是使用 Framework 2.0 时,问题就出现了。我严禁在设备中安装 Framework 3.5。

但是这个限制阻碍了我运行 UnitTest 应用程序,因为它使用了以下参考:

Microsoft.VisualStudio.SmartDevice.UnitTestFramework.dll

这需要设备或模拟器中的框架 3.5,否则它将引发异常。我需要知道是否有任何方法可以在 Framework 2.0 的限制内对我的设备应用程序执行 UnitTest。

【问题讨论】:

    标签: c# unit-testing compact-framework


    【解决方案1】:

    我进行了很多 Compact Framework 开发,我建议使用智能设备单元测试的替代方案,这也可以解决您的问题。

    重构您的代码,使您的 UI 只是一个视图。 (即它除了调用其他类之外什么都不做。)然后将您的非 UI 类置于单元测试之下。 (只是普通的单元测试。)

    Visual Studio 在你第一次创建正常的单元测试项目时会给你一个警告,但之后它就一帆风顺了。

    这样做的原因有 3 个:

    1. 速度。以这种方式运行单元测试所需的时间要少得多。
    2. 轻松。如您所见,让智能设备单元测试并正常工作需要一点时间
    3. 兼容性。通过这样做,您可以使用 Rhino Mocks 等工具。
    4. 您可以将单元测试项目的目标设置为.NET 2.0

    现在的缺点:

    1. 您并没有“真正”在 NETCF 环境中测试您的代码。

    虽然缺点很明显,但单元测试并不能替代“真实”测试,后者可以快速发现任何因该缺点而遗漏的问题。 (实际上,编译应该可以解决大多数问题。)

    【讨论】:

    • 代码很庞大.. 并且已经被很多人使用过。我们无法重构。有没有其他办法?
    • 我自己也不知道其他方法。如果有帮助,这种重构不仅对单元测试有好处。它有助于将 UI 与业务逻辑分开。
    【解决方案2】:

    您可以将您的单元测试项目设置为 .Net 3.5,将您的智能设备项目设置为 .Net 2.0。

    这样做有什么问题吗?

    【讨论】:

    • VSTS 不允许您设置目标框架。其次,它已经是这样了。
    【解决方案3】:

    您必须在创建测试项目时设置错误或遵循错误的程序。

    我刚刚使用 Studio 2008 重新验证了这一点,如果您正在测试的程序集针对 2.0 版,那么当您创建单元测试项目时,它也将针对 2.0 版。您必须使用上下文菜单中的“创建单元测试”向导来生成单元测试项目。

    【讨论】:

    • 适用于普通项目,如 win 或 web。我的目标是 2.0,但是对于设备的单元测试框架,只有 VS2008 附带,抛出 simonrhart.com/2007/12/…
    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多