2011-12-15 4 views
2

Когда я запускаю свой тестовый пакет интеграции с grails test-app -integration, все тесты проходят. Тем не менее, когда я запускаю их с grails test-app, модульные тесты проходят, но интеграционные тесты завершаться с ошибкой:Интеграционные тесты Grails терпят неудачу только при запуске с «grails test-app»

Cannot set readonly property: requestAttributes for class: 
org.springframework.web.context.request.RequestContextHolder 

Теперь я искал все экземпляры RequestContextHolder и не смогли найти место где это задается тестами/приложением.

Мой вопрос в том, что отличает между запуском только тестов интеграции и всего набора тестов? Я столкнулся с примерами, когда тесты не сработают, потому что registerMetaClass не был вызван в предыдущем тесте, но эта ситуация кажется иной, поскольку это целый набор.

ответ

2

Это звучит как загрязнение для меня.

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

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

И git, и mercurial have a built in feature called "bisect", что позволяет охотиться за точной ревизией, вызвавшей сбой, без необходимости ручного обновления. Если вы находитесь на другом RCS, у него может быть что-то подобное.

+0

Спасибо Теду, я дам это завтра. Я просто присоединился к проекту, поэтому не знаю, как долго тесты были разбиты (или если они когда-либо работали, если на то пошло). – Igor

+1

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

Смежные вопросы