Unit testing 所有单元测试是否存在Moq异常?

Unit testing 所有单元测试是否存在Moq异常?,unit-testing,exception,build,moq,badimageformatexception,Unit Testing,Exception,Build,Moq,Badimageformatexception,我目前正在增加软件产品的代码覆盖率,遇到了一个问题;由于抛出“BadImageFormatException”,我的所有单元测试(使用“任意CPU”编译时)都失败 通过使用“x86”而不是“任何CPU”构建解决方案,可以避免此异常,但是,我们需要能够使用任何CPU/x64位运行它们 所有涉及Moq的单元测试都遵循几乎相同的格式: [TestMethod] public void GetProduct_ValidId_ProductReturned() { //Setting up the

我目前正在增加软件产品的代码覆盖率,遇到了一个问题;由于抛出“BadImageFormatException”,我的所有单元测试(使用“任意CPU”编译时)都失败

通过使用“x86”而不是“任何CPU”构建解决方案,可以避免此异常,但是,我们需要能够使用任何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);
}
[TestMethod]
public void GetProduct_ValidId_ProductReturned()
{
//设置对象
产品生产=新产品();
prod.ID=7;
产品名称=“测试”;
//创建模拟
var mockProductRepo=new Mock();
var testDb=new Mock();
//设置回购需要返回的内容,在这种情况下,它是一种产品
mockProductRepo.Setup(m=>m.getByID(7)).Returns(prod);
//设置数据库需要返回的内容,在这种情况下,我们已经设置了我们的repo
SetupGet(m=>m.ProductRepo).Returns(mockProductRepo.Object);
//运行测试
Product returnedProd=ProductHelper.getProduct(testDb.Object,7);
Assert.IsNotNull(returnedProd);
}
当使用x86构建此测试时,我可以确认它是成功的。有人对我如何让Moq在使用“任何CPU”构建时发挥出色有什么想法吗

另外,我还可以确认解决方案中的所有项目都是使用相同的值(“任何CPU”)构建的。我正在使用moqv4.0

编辑:以下是完整的异常:测试方法[ProductName和名为]的方法引发异常:
System.BadImageFormatException:无法加载文件或程序集“[产品名称]、版本=1.0.0.0、区域性=中性、PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序

这可能是由于缺少项目或其他程序集引用造成的。尝试确保解决方案中所有项目都有项目引用


有一个更进一步的例子。

好的,经过一番挖掘,我终于发现了问题所在。即使您从工具栏中选择“构建”,然后选择“配置管理器”,并看到平台设置为“任意CPU”(就像我的情况一样),我没有做的就是检查项目中的目标平台

要检查目标平台,您需要执行以下操作:

  • 右键单击项目并选择“属性”
  • 选择左侧的“构建”选项卡
  • 确保测试项目的目标平台与正在测试的项目的目标平台匹配

在我的例子中,我的测试目标是“任何CPU”,但我的实时项目目标是“x64”。这就是导致问题的原因。

您确定是Moq导致异常吗?你能发布异常的全文/调用堆栈吗?它可能是罪魁祸首;所有其他没有运行Moq工作的测试都将对此进行研究,看看情况是否如此。我已经更新了我的问题,但有一个例外,那就是你应该接受这个答案,不管你是否自己解决了它。一旦所需的时间过去,我会让这个答案成为被接受的答案:)(它说我在接下来的两天内不能接受我自己的答案-可能是因为我的代表率低(?)