需要帮助将nUnit测试移动到单独的项目中

时间:2009-01-13 22:36:06

标签: .net visual-studio visual-studio-2005 nunit filenotfoundexception

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

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

  • 添加了另一个项目 (TestAccount.UnitTests)解决方案
  • 将单元测试类(AccountTests.vb)移至TestAccount.UnitTests
  • 并将TestAccount.UnitTests中的引用添加到TestAccount(copy local = true)

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

  

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

我做错了什么?

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

screenshot of Solution Explorer 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控制台,它可以正常工作。

[编辑]奥马尔:是的,我有另一个项目的参考。这是screenshot of my solution explorer

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

4 个答案:

答案 0 :(得分:2)

我发现bug report表示Visual Studio错误地扩展了TargetPath和TargetDir宏。它们扩展到obj \目录,而不是bin \

[更新]问题/解决方案实际上在文档的Visual Studio Support部分中讨论过。由于'Target'宏指向obj \,因此您无法使用它们开箱即用。我最终在Arguments字段中使用了以下表达式:

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)

答案 1 :(得分:0)

这可能听起来很愚蠢,但是如果您给测试项目提供了对其他项目的参考,我会明白这一点吗?

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

相关问题