2

当单元测试类是主项目(TestAccount)的一部分时,一切正常。

我读过的每一篇关于单元测试的文章都建议将测试放在一个单独的项目中,所以我...

  • 向解决方案添加了另一个项目 (TestAccount.UnitTests)
  • 将单元测试类 (AccountTests.vb) 移至 TestAccount.UnitTests
  • 并在 TestAccount.UnitTests 中添加了对 TestAccount 的引用(复制本地 = true)

该解决方案在没有任何警告的情况下编译。但是,nUnit 无法访问主项目并为每个测试提供以下错误:

System.IO.FileNotFoundException:无法加载文件或程序集“TestAccount,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。

我究竟做错了什么?

(在将 nunit.framework.dll 添加到 GAC 之前,我遇到了类似的问题)

解决方案资源管理器的屏幕截图 http://img440.imageshack.us/img440/4862/nunitsolutionexploreree3.jpg

Visual Studio 2005
.NET 2.0
nUnit 2.4.8(.NET 2.0 版本)

[编辑] 从 Visual Studio 运行 nUnit 时(作为外部命令)我只有这个问题。如果我独立加载 nUnit 控制台,它工作正常。

[编辑] Omar:是的,我参考了另一个项目。这是我的解决方案资源管理器的屏幕截图

我想我可能只需要单独运行 nUnit 控制台(而不是通过 VS 的外部工具)。

4

4 回答 4

2

我发现了一个错误报告,指出 Visual Studio 错误地扩展了 TargetPath 和 TargetDir 宏。它们扩展到 obj\ 目录,而不是 bin\

[更新] 问题/解决方案实际上在文档的Visual Studio 支持部分进行了讨论。由于“目标”宏指向 obj\,因此您不能直接使用它们。我最终在 Arguments 字段中使用了以下表达式:

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)
于 2009-01-14T15:49:34.927 回答
0

这可能听起来很傻,但我会很明显你给你的测试项目一个对另一个项目的引用吗?

此类问题常见的其他问题是使用无法从另一个项目/命名空间访问的内部类。

于 2009-01-14T15:46:10.847 回答
0

还要确保您的程序集输出路径与您的 NUnit 配置中设置的内容相对应。我有相同的设置,但我不必设置 'copy local = true'

于 2009-01-14T15:53:42.453 回答
0

问题是找不到应用程序本身还是应用程序的依赖项之一?您可以尝试使用 FileMon 或 Fusion Log Viewer 来查看到底是什么失败了。问题可能不在于找到应用程序本身,而在于找到另一个依赖项。确保所有依赖项都将 Copy Local 设置为 True。

您究竟是如何在 VisualStudio 中启动 NUnit GUI 的?如果您在项目属性下设置“启动外部程序”,它会为您提供指定工作目录的选项。您可能需要将其更改为测试 dll 的构建位置。

于 2009-01-14T22:51:59.130 回答