22

每当我尝试从 Visual Studio 2012 中的测试套件运行任何测试时,我都会得到

测试失败 - [测试方法名称]

消息:无法设置执行上下文来运行测试

而且我的测试甚至没有开始(即测试失败的根源指向测试方法的开头:

这里--> TEST_METHOD([测试方法名称]) {

}

这条消息是什么意思,它出现的原因是什么,我应该怎么做才能让我的测试正常运行?

4

7 回答 7

23

经过更多研究后,我意识到我忽略了这样一个事实,即我更改了包含被测方法(这是一个 .dll)的项目的“输出目录”,并且与我的测试项目库不在同一个文件夹中,因此给了我消息:

消息:无法设置执行上下文来运行测试

因此,通过确保包含被测方法的 .dll 与我的测试项目库位于同一文件夹中,以便在运行时我的测试项目可以找到 .dll,解决了问题。

于 2012-11-03T11:24:44.127 回答
18

我有同样的问题,前面提到的建议并没有为我解决这个问题。我的项目使用了一些第三方库,并且在我的 VS 项目的编译器和链接器设置中正确设置了这些库的路径。

原来VS测试引擎找不到库,所以我将这些库的路径添加到PATH环境变量中。这为我解决了这个问题。

提示:尝试使用 VSTest.Console.exe 从命令行运行单元测试。错误消息帮助我更轻松地调试我的问题。

于 2014-01-08T02:18:26.080 回答
11

对于那些寻找其他答案的人来说,找到所有需要的 DLL 是一个问题。我按照上面的建议将测试 dll 和要在同一位置进行测试的 dll 都放在同一位置,但仍然出现此错误。

我的测试 DLL 在其本机环境之外找不到它的子 DLL。您可以通过运行depends.exe找出缺少的内容。将这些其他 DLL 的位置添加到我的路径解决了问题,现在一切正常。

于 2014-03-17T16:38:12.770 回答
2

在我的项目中包含第三方 dll (OpenCV) 后出现此错误。将 dll 添加到路径或将其放在 system32 目录中确实有效,但我有一个更好的解决方案。

测试从名为 AppX 的目录运行。就我而言,它在这里:.......OneDrive\Documents\Visual Studio\Projects\TutorialOcr\x64\Debug\OcrTesting\AppX

我只是将 dll 放在那里,测试成功了!

于 2015-04-25T09:51:39.393 回答
2

我收到此错误,这是因为我使用的是调试 DLL,并且没有可以找到它们的调试 c++ 运行时。我将调试 c++ 运行时复制到同一目录中,问题已解决。

于 2013-06-25T17:37:29.597 回答
1

为测试创建的 .dll 从其构建所在的文件夹中运行。在我的情况下,“x64\UnitTests\Tests.dll”。我的应用程序的其余部分位于“x64\Debug\App.exe”和“x64\Release\App.exe”中。我的应用程序依赖于位于项目根文件夹中的外部 dll,这也是为调试启动指定的“工作目录”。

但是测试资源管理器测试启动器会忽略该设置并始终使用工作目录“x64\UnitTests”启动 Tests.dll,然后找不到我依赖的 dll。例如,添加SetCurrentDirectory("..\\..");测试类构造函数并不能解决问题,因为如果找不到静态依赖项,甚至无法将 dll 加载到内存中。

我通过将 UnitTests 配置的“输出目录”设置为“$(SolutionDir)”来解决它。这会导致在根文件夹中创建 Tests.dll。

于 2016-03-22T23:21:36.923 回答
0

我也仅在发布配置中遇到此错误,因为我不小心将调试库用作我的测试项目的库依赖项之一。(与 bmann 的帖子相同的问题)

为了找出导致问题的库,我注释掉了所有测试代码及其包含,添加了一个空测试,并一个一个地删除了我的依赖库,直到测试成功。

于 2013-09-10T09:50:22.080 回答