我有一个包含我的主要项目的解决方案,并使用NUnit的测试项目。 一切编译,但是当我运行NUnit的,我得到下面的测试负载后的异常,并且测试失败。 我已经添加了主体工程作为参考,我有$(PROJECTDIR)斌/调试/在外部工具设置的参数为NUnit的$(的TargetName)$(TargetExt),一个空白的初始目录。
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其中提到的/ bin和/ OBJ目录,但提供没有帮助的答案的错误。
任何解决方案?
而不是设置NUnit的作为外部工具,我设置的单元测试项目为启动项目。 在项目的属性窗口,设置开始行动“启动外部程序”,并指出它nunit.exe
。 在启动选项部分,我在“命令行参数”对话框中指定的测试组件(无需路径)。 在这一点上,只需按F5键启动NUnit的。
使用NUnit的-x86.exe程序,而不是作为nunit.exe你亚军。
一个更好的更长期的解决方案可能是购买ReSharper的,其中包括对NUnit的一个好得多的测试运行器完全集成到Visual Studio。 它能够自动检测你的.NET项目类型(X68或X64)。 整形自带吨的其他功能 ,其中单元测试只是其中的一个。 他们的测试运行器还集成了其DotCover代码覆盖分析 。
您可能会发现,你需要的Visual Studio使用ReSharper的更高版本。 最新版本可与Visual Studio的2013社区版 ,你可以得到免费的,虽然我知道你可能有升级,从这样一个比较旧的VS2005项目的一些项目的功能的问题。
我没有与任何ReSharper的隶属关系。
你是否在x64上运行? 如果从装载一个86位的x64你会得到错误,反之亦然。 此外,路你要创建应该是$(TARGETPATH)宏。
Is your main project a .exe or a .dll? Older versions of .NET couldn't reference an .exe, so that might be the problem.
In either case, I'd expect problems if the main assembly didn't end up somewhere accessible by your test assembly (for example, in the same directory). You could check that, and if not make it so, perhaps by having Visual Studio copy the referenced (main) assembly to the local directory.
The "An attempt was made to load a program with an incorrect format." makes me wonder if the "missing assembly" theory is right, but without more info, it's the best guess I can think of.
去NUnit的安装(例如:C:\ Program Files文件(x86)的\ NUnit的2.6.3 \ bin中)的位置和开放NUnit的-86.exe。