Что означает "метод... 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"..
Ответы
Ответ 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