繁体   English   中英

为什么不能在WP7单元测试项目中实例化我的页面之一?

[英]Why can't I instantiate one of my Pages in a WP7 unit test project?

我试图将单元测试合并到小型WP7音频录制应用程序中,以使自己熟悉该概念。 我已经阅读了一些有关该主题的文章,并且正在使用Windows Phone Toolkit测试框架。 我是WP7平台的新手,几乎完全是单元测试的概念。

我在MSDN博客上关注了Amit Chatterjee的示例单元测试,并相信我已经正确设置了单元测试项目。 但是,当我运行以下测试时:

[TestMethod]
[Description("Should always have this. Check if MainPage is created without problems.")]
public void CheckMainPageNotNull()
{
   AudioRecorder.MainPage recorder = new AudioRecorder.MainPage();
   Assert.IsNotNull(recorder);
}

它失败。 我知道断言永远都不会失败,这主要是一项琐碎的测试,以查看我是否正确设置了框架,而我显然没有这样做。 AudioRecorder是主要项目的名称。 单元测试报告者告诉我,我遇到了未处理的XamlParseException:

在System.Windows.Application.LoadComponent(对象组件,Uri resourceLocator)在AudioRecorder.MainPage.InitializeComponent()的AudioRecorder.MainPage ... ctor()上找到名称/关键字为AppNumberUpper [Line:20 Position:35]的资源)在...等

我在AssemblyInfo.cs设置了[assembly: InternalsVisibleTo("AudioRecorderUnitTests")] ,说实话我对我的设置有误。 在非平凡的示例中,是否有人对Windows Phone Toolkit测试框架有任何见识或良好的示例? 任一个将不胜感激。

我相信我终于找到了原因,即使不是实际的解决方案。 我在主项目的App.xaml中定义了一个名为AppNameUpper的自定义ApplicationResource。 看起来当单元测试项目试图解析它时,它抛出了一个异常。 删除该资源及其所有引用似乎已解决了该问题。

我不了解如何将ApplicationResources与单元测试框架结合使用,但这是另一个问题,而且很有可能是更多研究的问题。

该问题可能是对您在App.xaml声明的StaticResource的引用。 由于未使用正在测试的应用程序的Application类,因此无法解析引用。 即使您进行了“新”操作,它也不起作用,因为Application.Current是您的单元测试应用程序。

我建议不要在单元测试应用程序中测试视图 (页面),而应在视图模型中进行测试。

如果这对您来说是不可能的,那么您可能要考虑在单元测试项目中声明相同的资源。 但是,老实说,这样做会使它们越来越像“单元测试”,而越来越像维护噩梦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM