Раньше у меня были все модульные тесты для моего решения, содержащиеся в одной библиотеке, и недавно они были разделены. При размещении в одной сборке все тесты проходят как локально, так и в TeamCity, но при разделении возникают конфликты версий.
Конфигурация:
- Team City 7.1.5 (сборка 24400)
- Автофиксация 3.20.2
- AutoFixture.AutoMoq 3.20.2
- Moq 4.2.1402.2112
- NUnit 2.6.3
У меня есть несколько сборок модульных тестов, все из которых ссылаются на базовую тестовую библиотеку. Все тестовые сборки используют перечисленные выше пакеты NuGet.
При запуске тестов на машине разработчика (VS 2015) все тесты проходят успешно.
При запуске построения командного города выдается следующая ошибка:
System.IO.FileLoadException: не удалось загрузить файл или сборку Moq, Version = 4.1.1308.2120, Culture = нейтральный, PublicKeyToken = 69f491c39445e920 или одну из его зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) в Ploeh.AutoFixture.AutoMoq.MockPostprocessor.Create (запрос объекта, контекст ISpecimenContext)
В моем решении нет ссылки на Moq 4.1.1308.2120, поэтому я знаю, что это должна быть ссылка из AutoFixture.
Обновление AutoFixture до 3.31.3 не имеет значения.
У меня есть следующее перенаправление привязки в файлах app.config всех тестовых сборок:
<dependentAssembly>
<assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1402.2112" newVersion="4.2.1402.2112" />
</dependentAssembly>
Я не могу понизить свою версию Moq до 4.1.1308.2120, поскольку я использую функции 4.2 в своих тестах.
Мне кажется, что Team City игнорирует перенаправления. Я понятия не имею, почему, и, попробовав каждую комбинацию версий для этих сборок, я не могу заставить Team City успешно запустить тесты.