Nunit Relative Path失败

时间:2010-03-20 06:09:19

标签: nunit path relative filenotfoundexception

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

  1. 我正在构建一个正在测试的二进制文件,其中包含一些游戏元素和png文件的定义,这些文件将定义我正在使用的精灵(为了理智而称之为Binary1)
  2. Nunit从单独的二进制文件(Binary1Test)运行测试,针对第一个二进制文件(Binary1)执行测试方法。
  3. 除非测试在Binary1中执行,然后要求Binary1使用其中一个图像文件(通过相对路径定义),否则所有测试都会通过。调用该方法时,Nunit会抛出一个未找到异常的文件,说明它无法找到该文件并说明它正在查看Program Files \ Nunit.net 2.0文件夹中
  4. 所以我不知道为什么代码会这样做,并且当我拉出Enviornment.CurrentDirectory时它让我更加困惑它给了我正确的路径(我的调试文件夹的路径)而不是nunit的路径。此外,如果我使用它而不是使用相对路径,我的测试将运行没有问题。所以我的问题是,有没有人知道为什么在从我的二进制文件中加载相对路径的情况下,nunit决定使用它的目录而不是二进制文件所在的目录以及存储图像的位置?感谢。

1 个答案:

答案 0 :(得分:0)

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

以下是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" ) );