web-dev-qa-db-ja.com

「メソッド... ClassInitializeの署名が間違っています...」とはどういう意味ですか?

私のVisual Studio 2012ソリューションには、C++/CLIコードの単体テスト用のC#プロジェクトがあります。

...
using System.IO;
using Stuff;

namespace MyCLIClassTest
{
    [TestClass]
    public class MyCLIClassTest
    {
        public MyCLIClassTest() {}

        [ClassInitialize]
        public static void Setup(TestContext testContext) 
        {
        }

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

現在、C#テストはすべて失敗し、「メソッドMyCLIClassTest.MyCLIClassTest.ClassInitializeは誤ったシグネチャを持っています。メソッドは静的でパブリックである必要があり、値を返さず、タイプTestContextの単一パラメーターを取る必要があります。」

ClassInitializerを削除した後、「クラスMyCLIClassTest.MyCLIClassTestのTestContextプロパティを設定できません。エラー:System.ArgumentException:タイプ 'Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestContextImplementation'のオブジェクトをタイプ 'Microsoft.VisualStudio.TestToolsに変換できません。 .UnitTesting.TestContext '..

22
TobiMcNamobi

古いユニットテストフレームワークバージョンのDLLを使用しました。これは、プロジェクトが最近VS2012に移行したために発生しました。

したがって、テストプロジェクトの下のソリューションエクスプローラーには、「参照」があります。それを右クリックして[参照の追加...]を選択し、参照マネージャーを開きます。 「unittest」を検索し、バージョン番号10.1.0.0のMicrosoft.VisualStudio.QualityTools.UnitTestFrameworkを確認します。このアセンブリの他のすべてのバージョンのチェックを外します。 [OK]をクリックしてマネージャーを閉じます。

enter image description here

25
TobiMcNamobi

重複する質問からコピーされた代替回答: ClassInitializeの装飾されたメソッドがすべてのテストを失敗させるのはなぜですか?

[ClassInitialize]装飾されたメソッドは静的で、TestContextタイプのパラメーターを1つだけ受け取る必要があります。

[ClassInitialize]
public static void SetupAuth(TestContext context)
{
    var x = 0;
}
12
Zain Rizvi

私はまったく同じ問題があり、TobiMcNamobiによって提案されたように参照を削除/追加しても解決しませんでしたが、参照を削除し、プロジェクトを右クリックして[追加]> [単体テスト...]を選択すると、参照が再生成されます働いた。手動で実行した場合との違いがわかりません。

1
Mårten

セットアップの署名が間違っています。パラメーター1のタイプはMicrosoft.VisualStudio.TestTools.UnitTesting.TestContextである必要があります。

ロードテストプロジェクトを実行していて、DLLの両方のv10.0.0.0バージョンがありました。

Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll
Microsoft.VisualStudio.QualityTools.WebTestFramework.dll

LoadTestFrameworkのバージョンを10.1に変更しても修正されませんでした。

単体テストプロジェクトに移動して、MSTest.Adapter参照を削除する必要がありました。

Microsoft.VisualStudio.TestPlatform.TestFramework.dll
Microsoft.VisualStudio.TestPlatform.Extensions.dll

次に、単体テストプロジェクトにv10.1への参照を追加します。

Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll
1
Jeremy Thompson