VSTestHost падает и больше не будет работать - PullRequest
2 голосов
/ 07 октября 2009

Для своего проекта я использую интегрированную среду модульного тестирования Visual Studio, но у меня есть некоторые проблемы, которых я никогда не видел раньше.

Один из моих классов вызывает сбой VSTestHost. Итак, сначала я подумал, что это связано с тем, что куча кода вызывала переполнение стека. Что действительно странно, так это то, что теперь, даже если я создаю новый проект или использую старые проекты, которые работали раньше, VSTestHost немедленно падает (через 1/2 секунды после нажатия кнопки «Выполнить тесты»). На самом деле я просто не могу больше тестировать юнит ... Это действительно сводит меня с ума.

Я пытался найти много решений, найденных в Интернете, чтобы решить эту проблему, но ничего не помогло. Мне пришлось восстановить Windows до моего последнего обновления, чтобы он снова работал нормально. Не вызывает сомнений то, что это один конкретный класс тестирования, который приводит к тому, что инфраструктура модульных тестов сходит с ума. Когда я запускаю этот тестовый класс в первый раз, все идет хорошо, и все тесты проходят успешно, а затем каждый раз, когда я пытаюсь запустить модульный тест, происходит сбой VSTestHost, не позволяющий мне выполнить модульное тестирование в любом проекте.

Здесь я покажу вам тест, который предположительно вызывает сбой программы. Мой метод LoadFromExe () просто использует метод ConfigurationManager.OpenExeConfiguration (). В настоящее время я использую эту AlphaProjectConfiguration без каких-либо проблем.

[TestMethod()]
public void LoadGoodConfigurationFromExeTest()
{  

    using (StreamWriter sw = new StreamWriter(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath))
    {
        sw.Write(Resources.GoodConfiguration);
    }

    AlphaProjectConfiguration actual = new AlphaProjectConfiguration();
    actual.LoadFromExe();

    Assert.IsNotNull(actual);
}

Я просто приложил все свои усилия для решения этой проблемы, и сейчас я действительно избавляюсь от нее. Вот почему я прошу помощи у сообщества сейчас. Благодаря.


Edit: Этот тестовый класс содержит 3 других теста, которые почти делают то же самое. Я пробовал это на Windows 7 x64 и Windows XP x86 с VSTS 2008 SP1. Сбой происходит в обеих системах.

Ответы [ 3 ]

0 голосов
/ 07 октября 2009

Если во время теста что-то идет не так, возможно, некоторые ресурсы блокируются процессом mstest, вызывая проблемы.

Я мог бы предложить добавить код для устранения неполадок, чтобы гарантировать, что все файловые ресурсы правильно закрыты в случае возникновения непредвиденных исключений. Добавьте обработку исключений вокруг методов StreamWriter в методе LoadGoodConfigurationFromExeTest, а также в код AlphaProjectConfiguration.

Установите несколько точек останова или добавьте туда логин, чтобы увидеть, где что-то не так (если они есть).

Дополнительные предложения будут заключаться в том, чтобы полностью закомментировать использование класса AlphaProjectConfiguration и посмотреть, все ли происходит сбой. Похоже, вы говорите, что он будет падать только при использовании этого класса. Если это так, пора углубляться в истолкование.

Я, вероятно, не очень вам помогу, но это первые шаги, которые я бы сделал, не зная, сколько вы уже сделали.

0 голосов
/ 15 октября 2009

У меня была похожая проблема, к счастью, исправление решило проблему на моей машине. Если вы интересуетесь деталями этой проблемы, я написал об этом в моем блоге .

0 голосов
/ 07 октября 2009

Я не могу себе представить, что здесь происходит не так. У нас также есть некоторые неприятные проблемы с MSTest. Это довольно нестабильно и медленно.

Чтобы решить другую проблему, мы настроили тестовый хост для повторного запуска для каждого тестового запуска. Это может также решить вашу проблему.

Перейти Tools -> Options -> Test Tools -> Test Execution. Отключить «Поддерживать работу механизма выполнения тестов между тестами».

Для запуска тестового туннеля может потребоваться больше времени, поскольку тестовый хост должен запускаться каждый раз. Но это решает некоторые проблемы.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...