11

Silverlight3プロジェクトの単体テストを試みています。使ってます:

Moqを使用しないテストを作成すると、正常に機能します。

テストの外でMoqを使用すると、Moqは正常に機能します。(私はインターフェイスをモックし、証拠としてボタンハンドラーで検証を行いました。)

しかし、Moqを使用する単体テストを実行すると、常に次のようになります。

System.IO.FileNotFoundException: Could not load file or assembly 'System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.
at Moq.ExpressionExtensions.ToStringFixVisitor..ctor(Expression expression)
at Moq.Interceptor.AddCall(IProxyCall call, SetupKind kind) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Interceptor.cs: line 104
at Moq.Mock.<>c__DisplayClassc`2.<Setup>b__b() in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Mock.cs: line 387
at Moq.PexProtector.Invoke<T>(Func`1 function) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\PexProtector.cs: line 17
at Moq.Mock.Setup<T1,TResult>(Mock mock, Expression`1 expression) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Mock.cs: line 371
at Moq.Mock`1.Setup<TResult>(Expression`1 expression) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Mock.Generic.cs: line 194
at SilverlightMoq.Test1.TestFirst() in Test1.cs: line 23 

どうすれば修正できますか?


SL 3用に両方のアセンブリを再構築したところ、同じ結果になりました。

MicrosoftSilverlightユニットテストフレームワークでテストを実行することができました。

http://code.msdn.microsoft.com/silverlightut/

これは、SLを単体テストするための標準的な方法のように思われるブラウザー内テストフレームワークです。問題は次のとおりです。

  1. すべてのテストを一度に実行する必要があります

  2. それは残酷に遅いです。

    (nunitテストフレームワークで実行されている同じテストよりも約5倍遅い)

他のSLテストフレームワークまたはこのフレームワークに対してテストを実行するためのより良い方法を知っている人はいますか?

TestDriven.Netのvsプラグインを使用しようとすると、エラーが発生します。

System.IO.FileNotFoundException:ファイルまたはアセンブリを読み込めませんでした'システム、..。

4

5 に答える 5

9

Lee から提供された情報と、彼が提供したリンク ( http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx )のおかげで、Silverlight NUnitを取得できました。コード カバレッジでハドソンで実行されているテスト! 素晴らしいものねえ!また、それらはReSharperでも実行されるため、Silverlight でTDDを実行しても (20 秒の遅延で) 罰せられることはないと思います。

それで、私は正確に何をしましたか?

  • SL3 用の Silverlight 単体テスト フレームワーク プロジェクトを作成しました。

    ( http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/ )

  • 次に、すべてのテスト プロジェクトの Silverlight アセンブリの参照 (「mscorlib」を除く) を「Copy Local: True」に変更しました。詳細は次のとおりです。

    ( http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx )

  • 次に、次のブログで提供されている Silverlight NUnit 2.5.1 フレームワークへの参照を追加しました (以下で言及するブログで Jeff Willcox によって提供された他のバージョンと、上記の彼のブログで Jamie Cansdale によって提供されたバージョンがありますが、これが私が見つけた最新バージョンでした)。

    ( http://wesmcclure.tumblr.com/post/152727000 )

  • それでおしまい!その後、テストを作成して ReSharper で実行し、NUnit テスト ランナーから実行することができました。さらに、ncover を使用してカバレッジ レポートを取得できます!!!

  • 編集:そうです。UI スレッドを必要とするテストを実行すると、ReSharper でクロススレッド エラーが発生します。Deployment.Current.Dispatcher.BeginInvoke(...)これは、呼び出し内でこれらのテストを実行することで解決されます。

  • テストにユニットを使用した後、SL テスト フレームワークの Web インターフェイスからユニットを実行できませんでしたが、それは私にとってはそれほど問題ではありませんでした。これを機能させる必要がある場合は、次をご覧ください。

    ( http://www.jeff.wilcox.name/2009/01/nunit-and-silverlight/ )

  • PS: NUnit コンソール ランナーが NUnit コンソールからテストを実行するための NUnit プロジェクトも作成しました (同じ NUnit プロジェクトに非 SL テスト アセンブリを含めないでください。別の NUnit を使用しているため機能しません。フレームワーク ライブラリ)。

また、コンソールからテストを実行するためにStatLight ( http://statlight.codeplex.com/ ) を試してみました。 . また、StatLight には奇妙なバグがあり、テスト プロジェクトのリソースが適切に読み込まれず、いくつかのテストが失敗しました。

これが誰かに役立つことを願っています。ここで新しいことを思いついたわけではなく、誰かが前もってまとめてくれればよかったと思うすべての情報を統合しただけです。時間ができたら、SilverLight で Habanero フレームワーク ( http://www.habanerolabs.com ) プロジェクトを作成するという観点から、これについてブログに書きます。

うわー。それはすべての人々です!

于 2010-07-22T13:30:29.600 に答える
5

現時点での答えは、Jamie Cansdale の Silverlight Nunit Project Template のようです。

http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

このテンプレートは素晴らしく、まさに私が探していたものです。Resharper でも動作します。これにより、誰かが数時間を節約できることを願っています。

于 2009-04-13T08:18:27.507 に答える
4

継続的インテグレーションで使用し、一般的な Silverlight TDD を高速化するためのツールを作成しました...

http://www.StatLight.net

Silverlight で実行するようにコンパイルされた NUnit のすべてのバージョンが完全にサポートされるようになりました。

于 2009-04-13T15:40:31.280 に答える