使用框架2.0对智能设备进行单元测试

时间:2010-01-19 04:49:17

标签: c# unit-testing compact-framework

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

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

Microsoft.VisualStudio.SmartDevice.UnitTestFramework.dll

需要设备或模拟器中的框架3.5,否则会抛出异常。我需要知道是否有任何方法可以在Framework 2.0的范围内对我的设备应用程序执行UnitTest。

3 个答案:

答案 0 :(得分:2)

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

重构您的代码,以便您的UI只是一个视图。 (即它只会调用其他类。)然后将非UI类放在单元测试下。 (只是正常的单元测试。)

当您第一次创建正常的单元测试项目时,Visual Studio会给您一个警告,但之后它会顺利进行。

这样做有三个原因:

  1. 速度。以这种方式运行单元测试所需的时间要少得多。
  2. 易于。正如您所看到的,让智能设备单元进行测试和工作需要一些时间
  3. 兼容性。通过这样做,您可以访问Rhino Mocks等工具。
  4. 您可以将单元测试项目的目标设置为.NET 2.0
  5. 现在的缺点是:

    1. 您并非“真正”在NETCF环境中测试代码。
    2. 虽然缺点很重要,但单元测试并不能代替“真正的”测试,而这种测试可以快速发现任何可能因该缺点而错过的问题。 (实际上编译应该能够解决大多数问题。)

答案 1 :(得分:0)

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

这样做有什么问题吗?

答案 2 :(得分:0)

创建测试项目时,您必须设置错误或遵循错误的步骤。

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