Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# 无法在Bin文件夹c中运行单元测试#_C#_Unit Testing_Xunit - Fatal编程技术网

C# 无法在Bin文件夹c中运行单元测试#

C# 无法在Bin文件夹c中运行单元测试#,c#,unit-testing,xunit,C#,Unit Testing,Xunit,背景:我有一个第三方类库,它使用typeof(myClassFactory).Assembly.Location 来确定它的位置,然后使用它加载另一个dll。这是因为第二个dll未复制到临时位置而中断的。因此,我想让单元测试在/bin文件夹中运行。 我将Vs2017 pro与xUnit一起使用,并尝试了VS test runner和resharper,两者的行为相同 到目前为止我尝试的内容:我尝试创建test.runsettings文件并设置以下内容: false 如我所建议的 但是,代码仍在c

背景:我有一个第三方类库,它使用
typeof(myClassFactory).Assembly.Location
来确定它的位置,然后使用它加载另一个dll。这是因为第二个dll未复制到临时位置而中断的。因此,我想让单元测试在/bin文件夹中运行。 我将Vs2017 pro与xUnit一起使用,并尝试了VS test runner和resharper,两者的行为相同

到目前为止我尝试的内容:我尝试创建test.runsettings文件并设置以下内容:

false

如我所建议的

但是,代码仍在
c:/users/myuserName/Local/Temp/{someGuid}/{someGuid}/…etc


问题:如何使其在/bin目录中运行

我发现了我的问题,这与xUnit没有使用.runsettings文件有关

为了解决这个问题,我添加了一个名为
xunit.runner.json的新文件,并添加了以下代码:

{
“影印本”:假
}

我将其添加到解决方案的根目录中,然后通过右键单击该文件将其设置为复制到输出:

属性>复制到输出目录

设置为“更新时复制”


这使它工作起来

考虑重新设计。抽象出这一点,因为这是一个实现问题。这样你可以在测试你想要的路径时模仿它。嗨,谢谢你的关注。代码存在于被测试的DLL中,用于加载更多资源。它也是遗留代码,不太可能重新设计以允许单元测试。是否向测试项目添加对缺少的dll的直接引用?这可能会迫使VS将其复制到需要的位置。