在TFS构建中集成Silverlight单元测试

8
我们通过创建一个普通的.NET单元测试项目,删除除了unittestframework之外的所有引用,然后添加我们需要的SL程序集的引用 (system、System.Core等) 来创建silverlight单元测试。关于更多信息,请查看this博客文章。由于我们遵循MVVM模式并且几乎没有代码在codebehind中,所以我们可以这样做。我们不是在测试视图,而是在测试所有层次的功能(主要是VM-M)。
现在,这使我们能够每晚在我们的团队构建中测试silverlight逻辑。这个方法运作得相当好,直到我们开始混合使用SL项目和正常的.NET项目。当我们选择所有SL单元测试并运行它们时,它们都通过了。.NET单元测试也是如此。但是当我们同时运行它们时,有一组或另一组会完全失败。我们看到的消息是: "Unit Test Adapter threw exception: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information." 我猜问题在于这两组测试使用了不同的系统程序集,但我还没有能够找到问题所在。

有人试过这个吗? 谢谢, 菲尔

3个回答

1

使用两个独立的构建定义怎么样?它们可以以相同的方式或同时触发。唯一的区别是,一个只引用SL项目,另一个只引用.NET项目。

如果您不想从构建定义中引用项目,可以创建几个解决方案来与您的构建一起使用,并仅在一个解决方案中引用SL项目,而在另一个解决方案中仅引用.Net项目。


1

我猜想在应用程序域中有多个 System、mscorlib 等库可能会导致测试执行环境出现混淆。

你能否将其分成多个测试运行以进行 TFS 构建,或者编写一个带有代码的 MSBuild 脚本来调用 mstest.exe 并以此获取结果呢?


谢谢Jeff,我们通过在构建脚本中两次调用mstest.exe(一次用于.NET测试,一次用于Silverlight测试)解决了这个问题。 - Phil

1

您还可以使用Silverlight测试项目(从Silverlight Toolkit项目模板创建)并使用this solution在TFS构建服务器上运行您的Silverlight测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接