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

时间:2013-02-03 07:52:01

标签: c# unit-testing windows-phone-7

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

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

[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);
}

失败了。我知道Assert应该永远不会失败,这主要是一个微不足道的测试,看看我是否正确设置了框架,我显然没有。 AudioRecorder是主项目的名称。单元测试记者告诉我,我遇到了一个未处理的XamlParseException:

  

找不到名称/密钥AppNumberUpper的资源[行:20   位置:35]在System.Windows.Application.LoadComponent(Object   组件,Uri resourceLocator)   AudioRecorder.MainPage.InitializeComponent()at   AudioRecorder.MainPage ... ctor()at ... etc。

[assembly: InternalsVisibleTo("AudioRecorderUnitTests")]设置了AssemblyInfo.cs,老实说,我错误地设置了错误。有没有人有任何见解,或者在一个非常重要的例子中使用Windows Phone Toolkit测试框架的任何好例子?非常感谢。

2 个答案:

答案 0 :(得分:0)

我相信如果不是一个真正的解决方案,我终于找到了原因。我在主项目的App.xaml中定义了一个名为AppNameUpper的自定义ApplicationResource。似乎单元测试项目试图解析它时,它抛出异常。 删除该资源以及对它的所有引用似乎都解决了这个问题。

我不明白的是我是如何将ApplicationResources与单元测试框架结合使用的,但这是另一个问题的问题,也是更多研究的问题。

答案 1 :(得分:0)

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

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

如果您不可能,则可能需要考虑在单元测试项目中声明相同的资源。说实话,这样做会让他们越来越不像“单元测试”,更像是维护噩梦。