我们一直在通过创建一个简单的vanilla .net单元测试项目来创建silverlight单元测试,删除除unittestframework之外的所有引用,然后添加对我们需要的SL程序集的引用(system,System.Core,... )。有关更多信息,请查看this博文。我们可以做到这一点,因为我们坚持MVVM模式并且在代码隐藏中几乎没有代码。我们不是测试视图,而是测试所有层中的功能(基本上是VM-M)。
现在,这允许我们每晚测试我们团队构建中的silverlight逻辑。这很好用,直到我们开始混合SL项目和普通的.NET项目。当我们选择所有SL单元测试并运行它们时,它们会通过。 .NET单元测试也是如此。然而,当我们一次性运行它们时,无论是一组还是另一组完全失败。我们看到的消息指出:“单元测试适配器抛出异常:无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息..”。我想问题是这两组测试都使用不同的系统组件,但我无法确定问题所在。
有人试过吗? 干杯, 菲尔
答案 0 :(得分:1)
我猜测在app域中有多个System,mscorlib等库可能会混淆测试执行环境。
你可以将它分成多个TFS构建的测试运行,或者编写一个带有代码的msbuild脚本为其中一个调用mstest.exe并以这种方式获得结果吗?
答案 1 :(得分:1)
如何使用两个单独的构建定义?它们可以以相同的方式或同时触发。唯一的区别是你只在一个中引用了SL项目而在另一个中只引用了.NET项目。
如果您不想从构建定义中引用项目,则可以创建几个与构建一起使用的解决方案,并仅在一个解决方案中引用SL项目,在另一个解决方案中仅引用.Net项目。
答案 2 :(得分:1)
您还可以使用Silverlight测试项目(从Silverlight Toolkit项目模板创建)并使用this solution在TFS构建服务器上运行Silverlight测试。