【发布时间】:2019-05-16 19:51:08
【问题描述】:
我有一个可以正常工作的 Windows 窗体应用程序(编译会在 bin\debug 中创建 .exe 以及一个名为“Images”的文件夹。这个“Images”文件夹位于我的项目解决方案文件夹中,并设置为“始终复制”。
编译代码后,一切正常,没有 System.IO 异常。
但是,如果引用图像的类是在没有编译并通过单元测试工具的情况下实例化的,我会看到以下内容:
System.Drawing.Image.FromFile(字符串文件名,布尔值 useEmbeddedColorManagement) 在 System.Drawing.Image.FromFile(字符串文件名) 在 E:\workspaces\visual studio projects\Yahtzee\YahtzeeApplication\YahtzeeApplication\GameBoard.cs:line 124 中的 YahtzeeApplication.GameBoard..ctor() 在 E:\workspaces\visual studio projects\Yahtzee\YahtzeeApplication\UnitTestProject\GameBoardTest.cs:line 37 中的 UnitTestProject.GameBoardTest.GameBoardElements() 结果消息:System.IO.FileNotFoundException:Images\1.dice.GIF
这是加载图像的代码:
diceImageArray[0] = Image.FromFile("Images\\1.dice.GIF");
我正在查看测试类或实例化类是否没有看到图像。但是当我将一个名为“Images”的文件夹放在相对于调用的任一位置时,错误并没有消失。
你在单元测试中为这个场景做了什么?
【问题讨论】:
-
我了解您可能花费了大量时间来研究并在嵌入文件和将它们分开之间进行选择,然后决定您采用的方法...但是由于您不太可能愿意模拟你的图像加载管理器我建议给嵌入图像一秒钟。
-
您能发布尝试查找和加载图像的代码吗?是在您的测试代码中还是在您正在测试的系统中?
-
@Charlie - 我编辑了问题,所以代码现在在问题中,而不仅仅是我看到的异常。现在为了解决这个错误,我没有使用图像,而是改变了包含图像的图片框的颜色。同样,此代码在我编译和运行应用程序时都有效,因为 .exe 看到该文件夹并可以使用图像。但是,当我使用单元测试(未编译)实例化该类时,相对路径不正确。我相信这是问题所在。
-
现在我没有使用图片。单元测试现在通过了。将设法让它们嵌入,而不是通过代码显示/查看。我现在遇到的问题是它不是一对一的。在图片框上放一张图片会很容易。我在其他表单上作为背景图像执行此操作,并且单元测试通过,因为没有 System.IO 异常。有问题的表单具有显示多个图像的图片框。
-
您正在访问磁盘上的真实资源/图像。因此,这不是单元测试。这是一个集成测试。
标签: c# visual-studio unit-testing nunit