Метод тестирования не работает в Test Suite, но проходит индивидуально в.net C#

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

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

Кто-нибудь сталкивался с подобной ситуацией ранее.

3 ответа

Решение

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

Я сталкивался с подобными вещами раньше, обычно касаясь:

  1. Настройки приложения. Это может быть в случае с веб-сервисом. Обратите внимание, что ваши тесты выполняются в тестовом приложении, а не в обычном приложении exe.
  2. Статические переменные / инициализация. Если у тебя есть [testmethod] и [testclass], класс будет создан один раз, после чего будут вызваны все методы. Если вы используете состояние в своем классе, все может сломаться.

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

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

Используйте много журналов, чтобы добраться до источника:)

Я также столкнулся с той же проблемой, и она не только для платформы Microsoft. Я видел это и в NUnit. Для меня (и чаще всего) это то, что вы получаете доступ к одному и тому же элементу в нескольких тестах, поэтому его состояние не такое, как вы ожидаете при запуске в качестве группы. Поначалу это трудно определить, но если при написании тестов вы думаете, что любой тест должен быть в состоянии выполнить в любое время практически при любых обстоятельствах, вам стоит пройтись.

Чтобы выяснить, в чем проблема, попробуйте Утвердить, что состояние, которое вы предполагали, было истинным (например, Id == 1, или Name == null, или IsConnected == false), если вы можете заставить его выйти из строя еще до того, как вы Начните с того, что вы можете быть уверены, что это связано с государством.

Другие вопросы по тегам