Метод тестирования не работает в Test Suite, но проходит индивидуально в.net C#
Я столкнулся с очень странной проблемой при регрессионном тестировании.net. У меня есть метод тестирования, который не выполняется, когда я запускаю полный набор тестов, но тот же метод тестирования проходит при индивидуальном запуске.
Что может быть причиной этого. Я дважды проверил, что другие методы испытаний не влияют на это. Метод тестирования использует веб-сервис для извлечения некоторых данных, я не имею ни малейшего представления, почему он получает неверные данные при запуске в комплекте.
Кто-нибудь сталкивался с подобной ситуацией ранее.
3 ответа
Я столкнулся с очень странной проблемой при регрессионном тестировании.net. У меня есть метод тестирования, который не выполняется, когда я запускаю полный набор тестов, но тот же метод тестирования проходит при индивидуальном запуске.
Я сталкивался с подобными вещами раньше, обычно касаясь:
- Настройки приложения. Это может быть в случае с веб-сервисом. Обратите внимание, что ваши тесты выполняются в тестовом приложении, а не в обычном приложении exe.
- Статические переменные / инициализация. Если у тебя есть
[testmethod]
и[testclass]
, класс будет создан один раз, после чего будут вызваны все методы. Если вы используете состояние в своем классе, все может сломаться.
В любом случае, самый простой способ выяснить, что происходит, - это установить точку останова перед вызовом службы.
Скорее всего, у вас есть тест на загрязнение. Проверьте любое глобальное состояние, которое вы создаете, чтобы убедиться, что оно сброшено до желаемого состояния перед запуском теста.
Используйте много журналов, чтобы добраться до источника:)
Я также столкнулся с той же проблемой, и она не только для платформы Microsoft. Я видел это и в NUnit. Для меня (и чаще всего) это то, что вы получаете доступ к одному и тому же элементу в нескольких тестах, поэтому его состояние не такое, как вы ожидаете при запуске в качестве группы. Поначалу это трудно определить, но если при написании тестов вы думаете, что любой тест должен быть в состоянии выполнить в любое время практически при любых обстоятельствах, вам стоит пройтись.
Чтобы выяснить, в чем проблема, попробуйте Утвердить, что состояние, которое вы предполагали, было истинным (например, Id == 1, или Name == null, или IsConnected == false), если вы можете заставить его выйти из строя еще до того, как вы Начните с того, что вы можете быть уверены, что это связано с государством.