Что означает "Method ...ClassInitialize имеет неправильную подпись..."?

В моем решении Visual Studio 2012 у меня есть проект C# для модульного тестирования кода C++/CLI, например

...
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 я получил "Невозможно установить свойство TestContext для класса MyCLIClassTest.MyCLIClassTest. Ошибка: System.ArgumentException: объект типа" Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestContextImplementation "не может быть преобразован в тип" Microsoft.VisualStu..UnitTesting.TestContext"..

4 ответа

Решение

Я использовал DLL более старых версий модульного тестирования. Это произошло потому, что проект недавно перешел на VS2012.

Итак, в обозревателе решений в тестовом проекте вы найдете "Ссылки". Щелкните правой кнопкой мыши и выберите "Добавить ссылку...", чтобы открыть Менеджер ссылок. Выполните поиск "unittest" и проверьте Microsoft.VisualStudio.QualityTools.UnitTestFramework с номером версии 10.1.0.0. Снимите все остальные версии этой сборки. Закройте менеджер, нажав ОК.

Альтернативный ответ, скопированный с дублирующего вопроса: почему украшенный метод ClassInitialize делает все мои тесты неудачными?

[ClassInitialize] Оформленный метод должен быть статическим и принимать ровно один параметр типа TestContext:

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

У меня была та же самая проблема, и удаление / добавление ссылок, как было предложено TobiMcNamobi, не решило ее для меня, однако, удалив ссылку, щелкните правой кнопкой мыши проект и выберите "Add > Unit test..." и, таким образом, получите регенерированную ссылку работал. Не уверен, в чем разница по сравнению с выполнением вручную.

Программа установки имеет неправильную подпись. Параметр 1 должен иметь тип Microsoft.VisualStudio.TestTools.UnitTesting.TestContext.

Я выполнял проект Load Test и имел обе версии 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
Другие вопросы по тегам