Моя компания использует 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:
...