9

ここ数時間、Silverlight アプリケーションの単体テストを生成しようとしています。

多くの投稿で、Silverlight Toolkit の一部である「Silverlight Unit Test Project」に言及しています。しかし、ツールキットをダウンロードしましたが、まだテスト プロジェクトがありません。VS 2010 でしか利用できないようです。

「Silverlight Class Library」プロジェクトを追加し、次への参照を追加しました。

  1. Microsoft.Silverlight.Testing
  2. Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight

および次の TestClass:

using Microsoft.Silverlight.Testing;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTesting
{
    [TestClass]
    public class Class
    {

        [TestMethod]
        public void TestMethod()
        {
            .....    
        }
    }
}

しかし、Visual Studio 2012 テスト エクスプローラーによって検出されるテストはありません。ソリューションの再構築とアプリケーションの再起動後でも。

誰にもアイデアはありますか?これは可能ですか?

4

4 に答える 4

1

いくつかのテストを実行できました:

  1. 与えられた Visual Studio 2012 Professional (テスト ランナー付き)。

  2. のような名前で .NET 4.5 をターゲットとするクラス ライブラリを作成しますMyProject.Tests

  3. 参照C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllまたはあなたの場所から。

  4. .NET 4.5 の通常のテストとしてテストを追加します。

  5. プロジェクト参照を追加MyProject- Silverlight 5 を対象とするプロジェクト。

  6. いくつかのテストを追加します。建てる。参照が見つからないというエラーが発生する可能性があります: Error 12 The type 'System.Xml.Serialization.IXmlSerializable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Xml, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'

  7. 参照C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll

  8. ビルドして同じエラーを取得します。*.csprojヒント パスを 開いて確認します。xml <Reference Include="System.Xml"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll</HintPath> </Reference>

  9. テストを実行します。たとえば、右クリックTestMethod->を使用しRun Testsます。エラーが発生する可能性があります: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 修正方法: <Reference Include="System.Windows"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Windows.dll</HintPath> </Reference>

ノート:

  1. Silverlight 5 アセンブリは .NET 4.5 と同じ形式であることを思い出してください。
  2. HintPath.NET 4.5 アセンブリがプロジェクトのデフォルトであるため、テストは失敗します。. MSBuild スクリプトの変更および/またはアセンブリ バインディングのリダイレクトによる他の方法があると思います。
  3. .NET コア アセンブリは 4.5 から読み込まれます。これらが Silverlight のものと異なる場合、失敗する可能性があります。ないことを願っています。
  4. Silverlight ホスティング ランタイムに依存する機能が失敗する場合があります。Silverlight ウィンドウを表示したり、HTML DOM にアクセスしたりします。これは、Silverlight に依存しないようにコードをリファクタリングするための良い指標です。考えられるエラー:


       Test Outcome:    Failed

       Result Message:  
       System.DllNotFoundException: Unable to load DLL 'agcore': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
       Result StackTrace:   
    at MS.Internal.XcpImports.Application_GetCurrentNative(IntPtr context, IntPtr& obj)
       at MS.Internal.XcpImports.Application_GetCurrent(IntPtr& pApp)
       at System.Windows.Application.get_Current()


ActiveXSL のランタイムをプロセスにロードする必要があることを示します。

  1. .NET の代わりにSilverlight Toolkit バージョンのテスト アセンブリ ([TestMethod]内部に属性を含む) を参照すると、テストが表示されても実行されないという問題が発生します。
于 2015-01-27T09:32:57.707 に答える
1

テスト エクスプローラーにテストを表示するには、Silverlight Unit Test Adapter をインストールする必要があると思います。

于 2013-03-11T15:27:39.653 に答える