Я просмотрел несколько проблем с nunit и visual studio, описанных в stackoverflow, но не могу найти ни одной нити, подходящей для моего случая.
Я использую NUnit для тестирования написанного мной кода, загружаю файл * .csproj моего тестового проекта в NUnit GUI Tool.
Я понял проблему, думаю, но пока не нашел решения.
Что я делаю:
Я ссылаюсь на 2 других проекта, оба являются dll-проектами.
Это означает, что я получил 3 проекта: TestProject (DLL), SettingsManager (DLL), DatabaseInterface (DLL). Все в одном решении. Проект DatabaseInterface содержит собственные вызовы API-интерфейса к другой, C ++ x86, DLL, но не содержит явной ссылки на эту DLL с помощью оператора «using».
Одним из обоих является SettingsManager, хранящий некоторые данные конфигурации, такие как пути и т. Д., Но в любом случае. И Testproject, и DatabaseInterface ссылаются на SettingsManager.
Все 3 проекта встроены в «Debug» и в «AnyCPU». Ссылка и использование только SettingsManager в моем TestProject работает нормально, но когда я добавляю DatabaseInterface, я получаю исключение BadImageFormatException, сообщающее, что оно пытается загрузить файл, имеющий неправильный формат.
Чтобы сделать его более заметным, это работает:
using myNamespace.Settings; // contains SettingsManager
using System;
using NUnit.Framework;
namespace myNamespace.myTestProject
{
[TestFixture]
public class TestProject
{
[SetUp]
public void SetUp()
{
}
[Test]
public void ReadDbFile()
{
string s = SettingsManager.DbFile; // gets the path of the db file
}
}
}
NUnit Выход:
Это не работает:
using myNamespace.Settings; // contains SettingsManager
using myNamespace.DbInterface; // contains DatabaseInterface, which contains native calls to C++ dll
using System;
using NUnit.Framework;
namespace myNamespace.myTestProject
{
[TestFixture]
public class TestProject
{
DatabaseInterface instance = null;
[SetUp]
public void SetUp()
{
}
[Test]
public void ReadDbFile()
{
string s = SettingsManager.DbFile; // gets the path of the db file
}
}
}
Вторая попытка, содержащая
using myNamespace.DbInterface;
бросает
myNamespace.myTestProject.TestProject (TestFixtureSetUp):
SetUp: System.BadImageFormatException: сборка даты и даты "DatabaseInterface, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null" или ссылка не найдена. Попытка загрузить файл неправильного формата. "
, даже если все 3 проекта собраны с использованием Отладка и AnyCPU .
Я использую стандартный файл * .config, такой как файл тестового проекта NUnit. Может быть, некоторые не так с этим.
Кто-нибудь сталкивался с такой же ошибкой при попытке загрузить код из другой DLL?
Может ли быть проблемой, что оба проекта (Test & Database) ссылаются на DLL-библиотеку SettingsManager?
Я сделал что-то серьезное неправильно?
Я дважды проверил свою конфигурацию сборки во всех 3 проектах, но не смог найти какие-либо настройки, которые могут быть неправильными, и объясняет BadImageFormatException .