Код, который полагается обложить тестами не запускается в тестовом окружении. Проблема — библиотека которая указана в DllImport атрибуте не может быть найдена во время выполнения теста, если путь указан относительный — только имя директории. Если путь указан абсолютный — то все работает как надо.
Проблема в том, что я пока в размышлениях где искать проблему. Вся соль в том, как грузится тест: есть консольная утилита, которая проставляется кучу environment variables, делает пассы руками, трясет бубен и наконец запускает nunit_gui-console, которая запускает TestFixture. Сам тест в свою очередь запускает код в Cassini сервере (код на самом деле web-service) и затем вызывает его. Если unmanaged dll лежит в корне web-service или в его bin директории и ссылка на эту dll относительная — то interop не может нащупать эту либу.
Я предполагаю, что нужно внимательно посмотреть на нужное свойство нужного AppDomain, чтобы понять, откуда dll пытается быть загруженной. Внимание, вопрос — на какой из AppDomain и какой из его параметров в это матрешке смотреть. Или если дело не в AppDomain какие пути решения еще возможны?
DllImportAttribute.Value Property:
You can provide a full or relative path. If you provide no path, the DLL must be in the current path at run time, unless the DLL is loaded by some other means. Be aware, however, that using a fully qualified path can introduce inaccuracy if the DLL is moved.
Собственно вопрос — как узнать этот current path? Каков механизм загрузки unmanaged библиотек?