Я преобразовал решение из VS2008 в VS2010 с пакетом обновления 1 (SP1) и изменил проект модульного тестирования, чтобы нацелить его на платформу 3.5. Помимо исправления нескольких ссылок в проекте модульного тестирования, все работало нормально, и решение было успешно построено. Большинство тестов прошло успешно, но было несколько неудачных. Те, которые потерпели неудачу, используют частный метод доступа. Лично я предпочел бы просто удалить эти тесты, так как я не считаю их необходимыми, но пока они обнаруживают потенциальную ошибку в SP1, я подумал, что увижу, может ли кто-нибудь найти обходной путь.
Сообщение об ошибке, которое я получаю при запуске тестов: «Эта сборка построена из среды выполнения, которая новее текущей загруженной среды, и не может быть загружена».
Насколько я могу судить, похоже, что сборка частного средства доступа создается средой выполнения 4.0 (скорее всего, через Microsoft.VisualStudio.QualityTools.UnitTestFramework), но, поскольку среда выполнения 3.5 загружается MSTest, возникает ошибка.
Я попытался изменить ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework, чтобы специально использовать версию 9.0 (в настоящее время это 10.1). Это приводит к ошибке времени компиляции, которая говорит о том, что сборка частного средства доступа использует версию 10.0 Microsoft.VisualStudio.QualityTools.UnitTestFramework, которая выше, чем версия 9.0.
Я удалил сгенерированную сборку приватного средства доступа и воссоздал ее, но все еще имею ту же проблему. Казалось бы, что-то не синхронизировано с VS2010 SP1, когда платформа 3.5 предназначена для проекта модульного тестирования.
Вот код для одного из модульных тестов (опять же, не очень ценный тест, но не в этом пост ...):
[TestMethod()]
public void GetNullableCharValue_DBNull_ReturnsNull_Test()
{
object value = DBNull.Value;
Nullable<char> expected = null;
Nullable<char> actual;
actual = RepositoryBase_Accessor.GetNullableCharValue(value);
Assert.AreEqual(expected, actual);
}