2010-01-19 80 views
1

VSTS 2008(Visual Studio Team System)带有内置单元测试功能。我们可以添加一个测试项目来执行智能设备项目的单元测试。问题出在我的智能设备项目不使用Framework 3.5而是使用Framework 2.0时。我严格地不要在设备中安装Framework 3.5。使用框架2.0的智能设备的单元测试

Microsoft.VisualStudio.SmartDevice.UnitTestFramework.dll

这就要求设备或者模拟器框架3.5:

但这种限制是因为它是使用下面的参考妨碍我在运行单元测试应用程序它会抛出一个异常。我需要知道是否有任何方法可以在Framework 2.0的限制范围内对我的设备应用程序执行UnitTest。

回答

0

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

这样做有什么问题吗?

+0

VSTS不允许您设置目标框架。其次,它已经如此。 – Sumeet 2010-01-19 05:25:47

2

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

重构您的代码,以便您的UI仅仅是一个View。 (也就是说,除了调用其他类以外,什么都不做)。然后将你的非UI类放在单元测试下。 (只是正常的单元测试。)

当您第一次创建正常的单元测试项目时,Visual Studio会给你一个警告,但在此之后它是平稳的航行。

有3个原因,这样做的:

  1. 速度。以这种方式运行单元测试需要很少的时间。
  2. 简单。正如您所看到的,获得智能设备单元测试和工作需要一点时间
  3. 兼容性。通过这样做,您可以访问Rhino Mocks等工具。
  4. 您可以设置单元测试项目的目标是.NET 2.0

现在的缺点:

  1. 在NETCF环境你是不是“真的”测试代码。

虽然缺点很明显,但单元测试并不能取代“真正的”测试,因为它能够快速捕捉任何由于该缺点而错过的问题。 (真正的编译应该能够解决大多数问题。)

+0

代码很大..已经被许多人使用。我们不能重构。有没有其他方法? – Sumeet 2010-01-21 06:17:44

+1

我不知道任何其他方式。如果它有帮助,这个重构对代码来说不仅仅是单元测试更好。它有助于将UI与业务逻辑分开。 – Vaccano 2010-01-21 19:11:28

0

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

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

+0

适用于win或web等常规项目。我的目标是2.0,但对于一个设备的单元测试框架来说,只有VS2008才会出现,其他投掷如下 http://www.simonrhart.com/2007/12/microsoftvisualstudiosmartdevicetesthos.html – Sumeet 2010-01-21 06:01:51