Что означает "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