Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# 单元/集成测试中的反射问题_C#_Unit Testing_Reflection - Fatal编程技术网

C# 单元/集成测试中的反射问题

C# 单元/集成测试中的反射问题,c#,unit-testing,reflection,C#,Unit Testing,Reflection,我正在用反射动态创建一个类的实例,这很好,除非试图通过单元测试来实现——我正在使用MS测试框架。 我遇到一个常见错误:“无法加载文件或程序集'Assy'或其依赖项之一。系统找不到指定的文件” 我已将dll复制到单元测试项目的bin\debug bin中-这不是放置dll的正确位置吗 string assyName = "Go.Data.SqlServer"; string typeName = "GoMolaMola.Data.SqlServer.DataProviderFactory";

我正在用反射动态创建一个类的实例,这很好,除非试图通过单元测试来实现——我正在使用MS测试框架。
我遇到一个常见错误:“无法加载文件或程序集'Assy'或其依赖项之一。系统找不到指定的文件”
我已将dll复制到单元测试项目的bin\debug bin中-这不是放置dll的正确位置吗

string assyName = "Go.Data.SqlServer";
string typeName = "GoMolaMola.Data.SqlServer.DataProviderFactory";

Assembly assy = Assembly.Load( assyName );
object o = assy.CreateInstance( typeName );
有什么想法吗?我是单元测试新手,如有任何帮助,将不胜感激


感谢诸如此类的情况,当需要从单元测试中动态加载DLL时,我有一个生成后事件将DLL复制到该目录。我很想知道还有没有别的办法。这是唯一对我有效的方法:(

要编辑后期生成,请在项目上单击鼠标右键,转到生成事件,然后将副本放置在后期生成事件命令行中,如下所示:

copy $(TargetPath) "$(SolutionDir)yourDir\$(TargetFileName)"

bin/Debug
文件夹不是单元测试运行的地方。Visual Studio将把单元测试编译的输出复制到
TestResults
文件夹中(通常保留最后五次测试运行,每个测试运行都在文件夹名中嵌入时间戳),然后在那里运行单元测试


如果要将.DLL放在该文件夹中,请从测试项目中创建对.DLL的引用,或使用该属性确保将该项复制到测试目录中。

我也遇到了这个问题,上面的答案都不适用于我:( 1.向项目添加引用对我不起作用 2.添加DeploymentItem属性也不起作用 3.在这种情况下,添加构建后命令也是不可能的,因为单元测试引擎每次都会创建一个带有时间戳的新out目录,并在这个新目录中搜索该程序集


但我通过启用部署并在本地测试设置-->部署中添加指定文件来解决此问题

没错,它不是从bin文件夹运行的。我从测试项目中添加了一个引用,解决了这个问题!感谢您的帮助