使用动态下载的xaps测试Silverlight项目的问题单元

时间:2011-05-03 08:04:17

标签: silverlight unit-testing mef

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

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

当我们从Loader.Bootstrapper继承TestBootstrapper时,Loader项目下载core.xap并导入core.bootstrapper以初始化它。但是,当mef尝试导入core.bootstraper时,它会将其与加载器下载的core.xap和具有核心项目引用的testproject.xap进行匹配。这会导致导入失败,因为它已经初始化。

有没有办法我们仍然可以动态下载xaps但不会导致项目之间的交叉引用问题?

1 个答案:

答案 0 :(得分:1)

在引用上设置Copy LocalFalse应该确保MEF不会尝试加载它两次。

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