4

我在 Visual Studio 中有一个包含 2 个项目的解决方案。用于 NUnit 测试的普通项目和“测试”项目。我在测试项目中有对正常项目的参考。我尝试添加测试并使用 NUnit GUI 运行它们,但我收到一条错误消息,说它找不到“正常”项目的“dll”(我猜想得到方法?)。问题是,“正常”项目不是一个类库,它是一个可执行文件,所以测试项目的 bin/Debug 有 normalproject.exe 而不是 normalproject.dll。

如何让 NUnit 使用此设置?我什至会感谢具有这种设置的教程的链接,到目前为止,谷歌搜索还没有出现任何内容。

我得到的实际错误代码是:

Achievement.Tests.Achievement.BruiserTest.CheckNameAndDescription:System.BadImageFormatException:无法加载文件或程序集“成就,版本=1.0.0.0,文化=中性,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。

4

2 回答 2

5

我有同样的问题!

解决方案: NUnit 使用 x86 和 x64 二进制文件安装。在开始菜单中它只显示默认的 x64 程序。由于我使用了一些本机库,我的项目针对 x86,所以我必须手动启动nunit-x86.exeC:\Program Files (x86)\NUnit 2.6.3\bin并且它工作!

于 2013-12-02T14:34:12.047 回答
3

检查是您要测试的类的可访问性。它们必须标记为公开,否则您的测试项目将无法看到它们以加载它们。

使您的类公开的另一种方法是在您的 EXE 中使用 InternalsVisibleTo 属性并授予对您的测试项目 DLL 的访问权限。您只需将它们标记为内部,而不是公开的。

在 EXE 的 AssemblyInfo.cs 中:

[assembly: InternalsVisibleTo( "Project.Tests" )]  

为您的测试引用 EXE 而不是 DLL 没有问题(从技术上讲,无论如何;应用程序架构是另一回事)

于 2012-10-06T03:08:25.597 回答