Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nunit-测试exe_C#_Visual Studio 2010_Nunit - Fatal编程技术网

C# Nunit-测试exe

C# Nunit-测试exe,c#,visual-studio-2010,nunit,C#,Visual Studio 2010,Nunit,我在VisualStudio中有一个包含2个项目的解决方案。一个普通项目和一个NUnit测试的“测试”项目。我在测试项目中参考了正常项目。我尝试添加测试并使用NUnit GUI运行它们,但我得到一个错误,说它找不到“正常”项目的“dll”(我想是找到方法了吧?)。问题是,“normal”项目不是类库,而是可执行文件,因此测试项目的bin/Debug使用normalproject.exe而不是normalproject.dll 如何让NUnit使用此设置?我甚至会很感激有这样设置的教程的链接,谷歌

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

如何让NUnit使用此设置?我甚至会很感激有这样设置的教程的链接,谷歌搜索到目前为止还没有发现任何东西

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


Achipment.Tests.Achipment.BrucerTest.CheckName和描述:
System.BadImageFormatException:无法加载文件或程序集“Achatization,Version=1.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。

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

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

在EXE的AssemblyInfo.cs中:

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

在测试中引用EXE而不是DLL是没有问题的(从技术上讲,应用程序架构是另一回事)

我也有同样的问题

解决方案: NUnit使用x86和x64二进制文件安装。在“开始”菜单中,它仅显示默认的x64程序。
我的项目是针对x86的,因为我使用了一些本机库,所以我不得不从
C:\ProgramFiles(x86)\nunit 2.6.3\bin
手动启动
nunit-x86.exe
,它成功了

Achization.Tests.Achization.BrucerTest.CheckNameAndDescription:System.BadImageFormatException:无法加载文件或程序集“Achization,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。我注意到这是因为所有类都已公开,并且assemblyinfo更改没有帮助:(Re BadImageFormatException:项目的目标平台体系结构是什么?它是否与安装的NUnit体系结构匹配?如何检查我安装的NUnit?我为windows安装了“典型”。Visual Studio当前的目标是“混合平台”。默认安装程序将NUnit安装到
C:\Program Files(x86)中)\nunit 2.6.1
。您可以使用查看程序集的体系结构。请尝试将您的项目定位为32位。