1

我在使用 Nunit 时遇到问题,当我运行测试时找不到图像文件,并且每次它查找图像时都会在 Nunit 文件夹中查找,而不是在二进制文件所在的文件夹中查找。下面是正在发生的事情的详细描述。

  1. 我正在构建一个正在测试的二进制文件,其中包含一些游戏元素和 png 文件的定义,这些文件将定义我正在使用的精灵(为了理智起见,称之为 Binary1)
  2. Nunit 从单独的二进制文件 (Binary1Test) 运行测试,针对第一个二进制文件 (Binary1) 执行测试方法。
  3. 所有测试都通过,除非测试在 Binary1 中执行代码,然后要求 Binary1 使用其中一个图像文件(通过相对路径定义)。调用该方法时,Nunit 会抛出一个找不到文件的异常,指出它找不到该文件并声明它正在查看 Program Files\Nunit.net 2.0 文件夹的内部

所以我不知道为什么代码会这样做,并且当我拉起 Enviornment.CurrentDirectory 时让事情变得更加混乱,它给了我正确的路径(我的调试文件夹的路径)而不是 nunit 的路径。此外,如果我使用它而不是使用相对路径,我的测试将毫无问题地运行。所以我的问题是,有谁知道为什么在从我的二进制文件中加载相对路径的情况下,nunit 决定使用它的目录而不是二进制文件所在的目录和存储图像的目录?谢谢。

4

1 回答 1

0

我不确定为什么会发生这种情况,但想提一些可能有助于您排除故障的东西。您的测试中是否有任何路径约束断言?它可能会帮助您解决此问题。

这是语法的 NUnit.org 链接:http ://www.nunit.org/index.php/extensions/docs/2.4/files/index.php?p=pathConstraints&r=2.5.1

这是相对路径语法的示例(来自上面的链接)。您可能想要断言您的相对路径与绝对路径相同,然后看看发生了什么。至少你会有一个关于你需要通过的路径的特定失败测试。

Assert.That( "/folder1/./junk/../folder2", 
    Is.SamePath( "/folder1/folder2" ) );
Assert.That( "/folder1/./junk/../folder2/x", 
    Is.Not.SamePath( "/folder1/folder2" ) );
于 2010-03-21T00:20:54.810 回答