Подтвердить что ты не робот

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

В моем решении Visual Studio 2012 у меня есть проект С# для модульного тестирования кода С++/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()
        {
            ...
        }
    }
}

Теперь все тесты С# завершаются с сообщением типа "Метод MyCLIClassTest.MyCLIClassTest.ClassInitialize имеет неправильную подпись. Метод должен быть статическим, общедоступным, не возвращать значение и должен принимать один параметр типа TestContext."

После удаления ClassInitializer я получил "Невозможно установить свойство TestContext для класса MyCLIClassTest.MyCLIClassTest. Ошибка: System.ArgumentException: Объект типа" Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestContextImplementation "не может быть преобразован в тип" Microsoft ". VisualStudio.TestTools.UnitTesting.TestContext"..

4b9b3361

Ответ 1

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

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

введите описание изображения здесь

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Я запускал проект тестирования нагрузки и имел обе версии DLL версии v.0.0.0.0:

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

Изменение версии LoadTestFramework до версии 10.1 не исправило ее.

Мне пришлось перейти в проект Unit Test и удалить ссылки MSTest.Adapter:

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

Затем в проекте Unit Test добавьте ссылку на v10.1

Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll