4

ソリューションを VS2008 から VS2010 SP1 に変換し、単体テスト プロジェクトを 3.5 フレームワークを対象とするように変更しました。単体テスト プロジェクトでいくつかの参照を修正する必要があることを除けば、すべてが正常に機能し、ソリューションが正常にビルドされました。ほとんどのテストは正常に実行されましたが、失敗したものもいくつかありました。失敗したものは、プライベート アクセサーを使用しています。個人的には、これらのテストは必要ないと思うので削除したいと思いますが、SP1 の潜在的なバグが明らかになる限り、誰かが回避策を見つけられるかどうかを確認したいと思います。

テストの実行時に表示されるエラー メッセージは、「このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込むことができません。」私が知る限り、プライベート アクセサー アセンブリは 4.0 ランタイム (おそらく Microsoft.VisualStudio.QualityTools.UnitTestFramework 経由) によってビルドされているようですが、3.5 ランタイムは MSTest によって読み込まれるため、エラーが発生します。

Microsoft.VisualStudio.QualityTools.UnitTestFramework の参照を、特にバージョン 9.0 (現在は 10.1) を使用するように変更してみました。これにより、プライベート アクセサー アセンブリが Microsoft.VisualStudio.QualityTools.UnitTestFramework のバージョン 10.0 (バージョン 9.0 よりも新しい) を使用していることを示すコンパイル時エラーが発生します。

生成されたプライベート アクセサー アセンブリを削除して再作成しましたが、それでも同じ問題が発生します。単体テスト プロジェクトで 3.5 フレームワークをターゲットにすると、VS2010 SP1 と何かが同期していないように見えます。

単体テストの 1 つのコードを次に示します (繰り返しますが、非常に価値のあるテストではありませんが、それは投稿の要点ではありません...)。

    [TestMethod()]
    public void GetNullableCharValue_DBNull_ReturnsNull_Test()
    {
        object value = DBNull.Value;
        Nullable<char> expected = null;
        Nullable<char> actual;
        actual = RepositoryBase_Accessor.GetNullableCharValue(value);
        Assert.AreEqual(expected, actual);
    }
4

3 に答える 3

1

このソリューションは、アセンブリが署名されてバージョン管理されている場合、またはアクセサー クラスがある場合には機能しません。

http://connect.microsoft.com/VisualStudio/feedback/details/677203/even-after-installing-vs2010-sp1-unit-tests-targeting-3-5-framework-fail-if-they-are-using-プライベート アクセサー

于 2011-09-06T13:31:15.287 に答える
0

次の手順に従ってみてください: http://blogs.msdn.com/b/vstsqualitytools/archive/2010/12/19/how-to-re-target-unit-tests-to-net-framework-3-5-in -vs-2010-sp1.aspx

于 2011-03-22T20:15:44.807 に答える