我在Visual Studio中遇到这种不寻常的行为,我的测试二进制文件(mytestsolution.dll)和参考中添加的依赖二进制文件突然被复制到我的Bin文件夹中的TestResults \\ Out文件夹中从那里开始执行?
这导致我的测试失败,因为我的GetExecutionAssembly()给出了Out文件夹的路径而不是Bin文件夹,其中存在一些依赖的二进制文件?
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
Visual Studio 2010创建文件夹 TestResults ,并使用以下架构部署子目录中的所有相关文件: username_computername date time 。
如果您没有针对您的解决方案的.testsettings文件,这是正常行为。 .testsettings文件位于 Solution Items 文件夹中。
如果您有.testsettings文件,则取决于部署部分中启用部署的设置。如果选中启用部署,将创建并填充TestResults文件夹。
在某些情况下,尽管已启用“启用部署”,但可能会创建TestResults文件夹。但在这种情况下,该文件夹仅用于某些临时文件,而不是用于测试的执行文件。
有关更多信息,请参阅:
答案 1 :(得分:2)
参加聚会有点晚了,不过这里是我从实验中学到的东西
Env:net45,VS2017,Microsoft.VisualStudio.QualityTools.UnitTestFramework
当我的TestMethod
具有DeploymentItemAttribute
时,它将从TestResults\....\Out
文件夹执行。当我删除DeploymentItemAttribute
时,它将从bin\debug
执行。
答案 2 :(得分:1)
这是MSTest的默认行为。解决方案编译完成后,testrunner会复制对TestResults \ _TestRun_ \ Out文件夹的直接引用。更改编译设置(CopyLocal)不会影响测试运行。
如果您有所需的依赖项但不在TestRun输出文件夹中,则有几个选项:
在测试程序集中添加对这些程序集的引用。由于测试运行器使用反射来确定依赖关系,因此您需要引用该程序集中的类。
修改当前测试设置并将依赖项包含为部署项。
答案 3 :(得分:0)
将属性Copy Local
更改为False
mytestsolution.dll
,然后点击Properties
Copy Local
更改为false 答案 4 :(得分:0)
您可以通过在测试运行配置中禁用部署来解决此问题。例如,在VS 2008中:测试>编辑测试运行配置>本地试运行>部署>启用deployment = off。
有关详细信息,请参阅Test Deployment Overview。