Visual studio NUnit在单独的项目中进行测试,采用相同的解决方案
我有一个包含主项目和使用NUnit的测试项目的解决方案。一切都可以编译,但当我运行NUnit时,在加载测试后,我会得到下面的异常,测试失败。我已经添加了主项目作为参考,在外部工具设置的NUnit参数中有$(ProjectDir)bin/Debug/$(TargetName)$(targetText),初始目录为空Visual studio NUnit在单独的项目中进行测试,采用相同的解决方案,visual-studio,visual-studio-2008,nunit,Visual Studio,Visual Studio 2008,Nunit,我有一个包含主项目和使用NUnit的测试项目的解决方案。一切都可以编译,但当我运行NUnit时,在加载测试后,我会得到下面的异常,测试失败。我已经添加了主项目作为参考,在外部工具设置的NUnit参数中有$(ProjectDir)bin/Debug/$(TargetName)$(targetText),初始目录为空 MyMainProjectTests.Database.TestAddDelete: System.BadImageFormatException : Could not loa
MyMainProjectTests.Database.TestAddDelete:
System.BadImageFormatException : Could not load file or assembly 'MyMainProject,
Version=1.1.1.0, Culture=neutral, PublicKeyToken=null' or one of its
dependencies. An attempt was made to load a program with an incorrect format.
TearDown : System.Reflection.TargetInvocationException : Exception has been
thrown by the target of an invocation.
----> System.BadImageFormatException : Could not load file or assembly
'ChickenPing, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null' or one
of its dependencies. An attempt was made to load a program with an incorrect
format.
经过几个小时的搜索,我发现VS2005中只有一个bug,它提到了/bin和/obj目录,但提供的答案没有帮助
有什么解决方案吗?您的主项目是.exe还是.dll?较旧版本的.NET无法引用.exe,因此这可能是问题所在 在任何一种情况下,如果主程序集没有被您的测试程序集访问(例如,在同一目录中),我都会遇到问题。您可以检查这一点,如果没有,可以让VisualStudio将引用的(主)程序集复制到本地目录
“试图加载格式不正确的程序”让我怀疑“缺少程序集”理论是否正确,但如果没有更多信息,这是我能想到的最好的猜测。您是在x64上运行的吗?如果从x86加载x64位,则会出现该错误,反之亦然。另外,您尝试创建的路径应该是$(TargetPath)宏。我没有将NUnit设置为外部工具,而是将单元测试项目设置为启动项目。在项目的属性屏幕中,将启动操作设置为“启动外部程序”,并将其指向
nunit.exe
。在开始选项部分,我在“命令行参数”框中指定测试程序集(无需路径)。此时,只需按F5启动NUnit。使用NUnit-x86.exe而不是NUnit.exe作为运行程序
一个更好的长期解决方案可能是购买ReSharper,其中包括一个更好的NUnit测试运行程序,它完全集成到VisualStudio中。它会自动检测.NET项目类型(x68或x64)。Reformer附带的单元测试只是其中之一。他们的测试跑步者也与他们的系统集成
您可能会发现需要更高版本的Visual Studio才能使用ReSharper。最新版本的作品,你可以免费获得,虽然我知道你可能有问题,从这样一个相当旧的VS2005项目升级一些项目功能
我和ReSharper没有任何关系 只需将测试项目的“平台目标”设置为“x86”。转到NUnit安装(例如:C:\Program Files(x86)\NUnit 2.6.3\bin)位置并打开NUnit-86.exe。您能给出一些测试代码(TestAddDelete)的示例吗?是的。你所说的我试图创造的道路是什么意思。我对这个很陌生,你能发布一下你是如何在外部工具中使用NUnit setu的吗?给这个人一个投票权!这真的很好,因为你可以在NUnit GUI运行时逐步完成单元测试。