0

概念に慣れるために、単体テストを小さなWP7オーディオ録音アプリに組み込んでみようとしています。私はこのテーマについていくつか読んだことがあり、WindowsPhoneToolkitテストフレームワークを使用しています。私は一般的にWP7プラットフォームに不慣れであり、ユニットテストの概念はほぼ完全にです。

私はMSDNブログでAmitChatterjeeの単体テストの例をフォローしましたが、単体テストプロジェクトが正しく設定されていると信じています。ただし、次のテストを実行すると、次のようになります。

[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(Object component、Uri resourceLocator)at AudioRecorder.MainPage.InitializeComponent()at AudioRecorder.MainPage ... ctor(の名前/キーAppNumberUpper [行:20位置:35]のリソースが見つかりません)at...etc。

私は自分の中に[assembly: InternalsVisibleTo("AudioRecorderUnitTests")]設定しました、AssemblyInfo.csそして私が間違って設定したものに正直に困惑しています。誰かが洞察を持っていますか、または重要な例で使用されているWindows Phone Toolkitテストフレームワークの良い例はありますか?どちらかをいただければ幸いです。

4

2 に答える 2

0

実際の解決策ではないにしても、私は最終的に原因を突き止めたと思います。メインプロジェクトのApp.xamlでAppNameUpperという名前のカスタムApplicationResourceを定義しました。ユニットテストプロジェクトがこれを解析しようとしたときに、例外がスローされたようです。そのリソースとそのリソースへのすべての参照を削除すると、問題が解決したようです。

私が理解していないのは、単体テストフレームワークと組み合わせてApplicationResourcesをどのように使用するのかということですが、それは別の質問の問題であり、おそらくより多くの研究が必要です。

于 2013-02-17T10:27:52.300 に答える
0

問題は、StaticResourceで宣言したへの参照である可能性がありますApp.xaml。テスト対象のアプリのApplicationクラスが使用されていないため、参照を解決できません。Application.Currentあなたがそれを「新しく」したとしても、それはあなたのユニットテストアプリケーションであるため、機能しません。

単体テストアプリケーションからビュー(ページ)をテストするのではなく、代わりにビューモデルをテストすることをお勧めします。

それが不可能な場合は、単体テストプロジェクトで同じリソースを宣言することを検討してください。ただし、正直に言うと、そうすることで、それらは「単体テスト」のようになり、メンテナンスの悪夢のようになります。

于 2013-02-17T10:36:40.237 に答える