В настоящее время я занимаюсь увеличением охвата кода наших программных продуктов и столкнулся с проблемой; все мои модульные тесты (при компиляции с использованием «любого процессора») терпят неудачу из-за создания «BadImageFormatException».
Это исключение можно обойти, создав решение с использованием «x86» вместо «Любой процессор», однако требования таковы, что нам нужно иметь возможность запускать их с использованием любого бита CPU/x64.
Все модульные тесты с использованием Moq следуют примерно одному и тому же формату:
[TestMethod]
public void GetProduct_ValidId_ProductReturned()
{
//Setting up the object
Product prod = new Product();
prod.ID = 7;
prod.Name = "Test";
//Create the mocks
var mockProductRepo = new Mock<IRepository<Product>>();
var testDb = new Mock<IUnitOfWork>();
//Setup what the repo needs to return, in this case it's a Product
mockProductRepo.Setup(m => m.getByID(7)).Returns(prod);
//Setup what the database needs to return, in this case it's our repo which we've already setup
testDb.SetupGet(m => m.ProductRepo).Returns(mockProductRepo.Object);
//Run the test
Product returnedProd = ProductHelper.getProduct(testDb.Object, 7);
Assert.IsNotNull(returnedProd);
}
Я могу подтвердить, что этот тест прошел успешно, если он построен с использованием x86. Есть ли у кого-нибудь идеи о том, как я могу заставить Moq хорошо играть при сборке с использованием «любого процессора»?
Кроме того, я также могу подтвердить, что все мои проекты в решении построены с использованием одного и того же значения («Любой процессор»). Я использую Moq v4.0.
РЕДАКТИРОВАТЬ: Вот полное исключение: тестовый метод [ProductName и вызванный метод] вызвал исключение: System.BadImageFormatException: не удалось загрузить файл или сборку «[имя продукта], версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null ' или одна из его зависимостей. Была предпринята попытка загрузить программу с неверным форматом.