Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用动态下载的XAP对silverlight项目进行问题单元测试_Silverlight_Unit Testing_Mef - Fatal编程技术网

使用动态下载的XAP对silverlight项目进行问题单元测试

使用动态下载的XAP对silverlight项目进行问题单元测试,silverlight,unit-testing,mef,Silverlight,Unit Testing,Mef,我们有一个加载器项目和一个核心项目。核心项目包含我们需要进行单元测试的所有视图和视图模型。在测试视图模型时,我们希望像正常情况一样运行加载程序,以便正确设置任何所需的服务。为此,我们认为可以创建一个从加载程序项目引导程序继承的测试引导程序。这将启用我们的导航服务和IOC容器,以便我们可以测试视图模型 但我们发现的问题是,我们继承了加载程序引导程序,并将在单元测试中直接调用视图模型。我们需要一个对加载程序和核心的项目引用。这会将Loader.dll和Core.dll添加到测试项目xap文件中 当我

我们有一个加载器项目和一个核心项目。核心项目包含我们需要进行单元测试的所有视图和视图模型。在测试视图模型时,我们希望像正常情况一样运行加载程序,以便正确设置任何所需的服务。为此,我们认为可以创建一个从加载程序项目引导程序继承的测试引导程序。这将启用我们的导航服务和IOC容器,以便我们可以测试视图模型

但我们发现的问题是,我们继承了加载程序引导程序,并将在单元测试中直接调用视图模型。我们需要一个对加载程序和核心的项目引用。这会将Loader.dll和Core.dll添加到测试项目xap文件中

当我们启动从Loader.Bootstrapper继承的TestBootstrapper时,Loader项目下载core.xap并导入core.Bootstrapper来初始化它。但是,当mef尝试导入core.bootstraper时,它会将其与加载程序下载的core.xap和引用core项目的testproject.xap相匹配。这会导致导入失败,因为它已初始化


是否有一种方法可以动态下载XAP,但不会导致项目之间的交叉引用问题

在参考上设置
Copy Local
to
False
,应确保MEF不会尝试加载它两次


我认为您正在测试动态XAP加载是件好事,但是我认为您在继续测试时会遇到进一步的问题。我强烈建议您测试ViewModels,而无需在每次需要运行测试时进行XAP的整个动态下载。每个ViewModel都应该能够单独进行测试。如果这是一个相当小的项目,你可能不会感到太多的痛苦。虽然一旦项目变得越来越大,动态下载XAP所需的时间就会越来越长,运行测试所需的时间也会越来越长。不管怎样,这只是我的建议

在参考上设置
Copy Local
to
False
,应确保MEF不会尝试加载它两次


我认为您正在测试动态XAP加载是件好事,但是我认为您在继续测试时会遇到进一步的问题。我强烈建议您测试ViewModels,而无需在每次需要运行测试时进行XAP的整个动态下载。每个ViewModel都应该能够单独进行测试。如果这是一个相当小的项目,你可能不会感到太多的痛苦。虽然一旦项目变得越来越大,动态下载XAP所需的时间就会越来越长,运行测试所需的时间也会越来越长。不管怎样,这只是我的建议

不幸的是,这个项目已经很大了,这导致了一些问题。包含所有ViewModels的核心项目依赖于在Loader项目中设置的服务。另外,当我在测试项目上将Copy Local设置为False时,我得到了一个异常“System.IO.FileNotFoundException:cannot load assembly”。实际上,我已经开始工作了,对于加载程序项目,我仍然需要Copy Local=True,而不是核心项目。我现在遇到的问题是样式是在Loader App.xaml中设置的,但这被绕过到引导程序。我们解决了资源问题,我们必须将样式用于测试项目的控件的引用添加到测试项目中。不幸的是,项目已经很大,这导致了一些问题。包含所有ViewModels的核心项目依赖于在Loader项目中设置的服务。另外,当我在测试项目上将Copy Local设置为False时,我得到了一个异常“System.IO.FileNotFoundException:cannot load assembly”。实际上,我已经开始工作了,对于加载程序项目,我仍然需要Copy Local=True,而不是核心项目。我现在遇到的问题是,样式是在Loader App.xaml中设置的,但这被绕过到引导程序。我们解决了资源问题,我们必须将样式用于测试项目的控件的引用添加到测试项目中。