Drawing.Image 最小起订量或单元测试不允许?

Drawing.Image Not allowed in Moq or Unit Test?

我正在尝试对将图像(图像类型,而不是文件路径)加载到虚拟机堆栈的方法进行单元测试。

我有一个 Verify 调用,如下所示:

mockVM.Verify(q => q.Stack.Push(It.IsAny<Image>()), Times.AtLeastOnce());

为了检查下面的Stack.Push调用是否发生在被测方法中。因此,该方法的相关部分是:

Image newImage = Image.FromFile(@"" + Operands[0]);
VirtualMachine.Stack.Push(newImage);
Console.WriteLine("Hit loadimage");

在 class 测试中,我使用 System.Drawing 非常好,以便将图像用作类型。

但是在单元测试代码中,尽管使用了 System.Drawing 或任何变体,但我在 It.IsAny<Image>() 中的图像下出现错误。

The type or namespace name 'Image' could not be found (are you missing a using directive or an assembly reference?)

我想验证图像类型的对象是否被放置在堆栈中,但无法使用 Image 作为类型是个问题,我无法继续。

有什么原因导致我无法在单元测试中使用 System.Drawing 吗?或者有没有一种简单的方法可以实现我的目标。

System.Drawing 可能不会默认包含在您的单元测试项目中,而其他项目类型很可能会默认包含它。

确保您在单元测试项目中有对 System.Drawing 的引用,然后您应该能够在使用适当的命名空间后解析 Image

为新项目和单元测试项目使用默认引用的示例: