Не удается выполнить классы с присутствующим методом ClassInitialize

Я столкнулся с неловкой ситуацией - все тестовые классы, в которых присутствует метод [ClassInitialize], не могут выполнить все тестовые методы внутри.

Пример:

[TestClass]
public class ChargeAccountServiceTests
{
    private static PrivateType ChargeAccountService_Accessor;

    [ClassInitialize]
    public static void InitializeClass(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext context)
    {
         ChargeAccountService_Accessor = new PrivateType(typeof(ChargeAccountService));
    }

    [TestMethod]
    public void TestFixOMRHappySHA()
    {
          //TEST LOGIC
    }
}

Заставляет тестовый агент генерировать следующее исключение:

Test Name:  TestFixOMRHappySHA
Test FullName:  ChargeAccountServiceTests.TestFixOMRHappySHA
Test Source:    \ChargeAccountServiceTests.cs : line 22
Test Outcome:   Failed
Test Duration:  0:00:00

Сообщение о результате:

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

Этот тест работал несколько дней назад. Целью тестового проекта является .NET 3.5.


person Random    schedule 20.12.2013    source источник
comment
Вы недавно обновляли свой проект?   -  person Adarsh Shah    schedule 20.12.2013
comment
Я предполагаю, что вы ссылаетесь на неправильную версию Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. Попробуйте удалить и снова добавить эту ссылку.   -  person Justin    schedule 20.12.2013
comment
Это проблема DLL Hell. Используемый вами класс TextContext отличается от того, который ожидает средство выполнения тестов. Идентификация типа — это не только пространство имен и имя типа, но и сборка, из которой он получен. У вас есть ссылка на неправильную версию сборки UnitTestFramework.   -  person Hans Passant    schedule 20.12.2013


Ответы (3)


Наконец, я решил это, применив комбинацию советов, которые я нашел:

  1. Один из проектов MSTest был нацелен на 4.0, а другие на 3.5, поэтому мне пришлось изменить его и пересобрать подделки.
  2. Я удалил ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll и снова добавил ее во все свои тестовые проекты.
  3. Я нашел старую версию файла vsdmi в своем решении - удален
  4. Я удалил и создал Local.testsettings
  5. Перезапущен VS
person Random    schedule 23.12.2013

Из моего ответа на похожий вопрос у меня было то же самое проблема, для меня это сработало

  1. Удалите ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework.
  2. Щелкните проект правой кнопкой мыши и выберите "Добавить > Модульный тест...", чтобы восстановить ссылку с правильной версией.
person Mårten    schedule 24.02.2014
comment
Это не работает для меня, я поместил свой ответ в связанный вопрос, который стоит проверить. - person Jeremy Thompson; 03.07.2017

У меня была такая же ошибка, но для [AssemblyInitialize] не [ClassInitialize].

Удаление ссылки на Microsoft.VisualStudio.QualityTools.UnitTestFramework и повторное добавление v10.0.0.0 устранили проблему для меня.

Оказалось, что мои разные тестовые проекты ссылались на разные версии, и все они последовательно указывали на 10.0.0.0, что устранило проблему.

person stuzor    schedule 17.10.2018