NUnit работает в визуальной студии с coderush или testdriven.net "тесты не найдены" - PullRequest
3 голосов
/ 19 июля 2011

Моя компания использует MSTest и NUnit. Теперь я переключаю нас только на использование NUnit. Код полон архитектурных проблем, поэтому мы можем просто игнорировать их и работать над тем, как заставить его работать на самом деле. Думаю, основная проблема заключается в том, что параметры подключения к базе данных извлекаются непосредственно из ConfigurationManager.AppSettings []. В этом случае это путь «SettingsFile». Это путь к нашему главному конфигурационному файлу.

Причина, по которой я это поднимаю, заключается в том, что когда этот «файл настроек» существует, NUnit выдает ошибки, если я назову его «SettingsFile2», то это не ошибка. Я также переименую ссылки на него в своем коде, так что он все еще работает, он просто больше не дает ошибок.

Когда NUnit выдает ошибку, он возвращает не найденные тесты.

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

Я также создал совершенно пустой проект. Добавлен тестовый шаблон проекта C # test, добавлен тест nunit, добавлен app.config, протестирован и все заработало. У меня даже были те же настройки app.config.

Просто повторить: Если я захожу в app.config для тестового проекта и меняю key = "SettingsFile" на key = "SettingsFile2", а затем изменяю свой класс конфигурации на ConfigurationManager.AppSettings ["SettingsFile2"] и ничего не меняю, он теперь будет построить правильно. Почему это происходит?

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

Вывод из теста DXCore:

Testing started:

Exception:
Message: Exception has been thrown by the target of an invocation.
Source: mscorlib
StackTrace:
   at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at CR_ExtUnitTestRunner.Invoker.InvokeInThread()
InnerException:
Exception:
Message: Error loading settings file
Source: nunit.util
StackTrace:
   at NUnit.Util.XmlSettingsStorage.LoadSettings()
   at NUnit.Util.SettingsService..ctor(Boolean writeable)
   at NUnit.Util.SettingsService..ctor()
   at CR_NUnitTesting.Executor.Initialize()
   at CR_NUnitTesting.Executor.Execute(ExecuteTestData data)
   at CR_NUnitTesting.NUnitExtension.Execute(Int32 major, Int32 minor, ExecuteTestData data)
   at CR_NUnitTesting.NUnitExtension.<InitializePlugIn>b__2(ExecuteTestData data)
InnerException:
Exception:
Message: Object reference not set to an instance of an object.
Source: nunit.util
StackTrace:
   at NUnit.Util.XmlSettingsStorage.LoadSettings()
No tests found.
Duration : 5.25776431101399

UPDATE:

Добавление ссылки на наш проект CORE вызывает проблему. Основной проект - это проект, который читает атрибут SettingsFile. Обратите внимание, что я поставил запись файла IO, прежде чем что-либо получит доступ к SettingsFile, и ничего не было зарегистрировано. Я искал статические конструкторы классов в проекте CORE. Там нет ни одного. Я понятия не имею, почему добавление ссылки сломало бы это.

UPDATE:

Модуль Unit Test Runner в coderush не обновляется, чтобы показать правильные тесты. Я изменил настройки конфигурации на «SettingsFile2», чтобы тест выполнялся нормально, а затем модуль Unit Test Runner корректно обновляется. Но как только я щелкнул правой кнопкой мыши по тесту и сказал перейти к тесту, теперь он показывает все тесты, которые когда-либо существовали, которые сейчас удалены.

Еще одна странная вещь: Coderush распечатывает результаты дважды, но запускает тест только один раз.

Поиск тестов ... Всего тестов: 2, отфильтрованных: 1

CanConfirmDatabaseMatchesMappings не удалось: ... Не удалось CanConfirmDatabaseMatchesMappings: ...

1 Ответ

3 голосов
/ 19 июля 2011

Мы (DevExpress) воспроизвели проблему и зарегистрировали ее в нашей базе данных . Исправление для CodeRush Unit Runner почти готово. После изменения статуса ошибки вы можете запросить ежедневную сборку, содержащую исправление, со страницы проблемы.

...