单击Resharper"运行所有测试"按钮与使用键盘快捷键命令时,为什么会出现不同的行为?

Mat*_*ard 10 resharper unit-testing

我单元测试的代码是指app.config文件中的appsetting.为了满足这个需求,我在我的单元测试项目中添加了一个app.config文件.如果单击"单元测试会话"窗口中的"运行所有测试"图标,我的所有测试都会通过.

我已将"ReSharper.ReSharper_UnitTest_RunSolution"命令映射到Ctrl + Shift + Alt + U. 如果我通过按下这个组合来运行测试,测试全部运行,但是他们找不到appsetting,它通过null返回.

我假设这意味着按钮单击在测试项目的上下文下运行,而命令没有,但我无法确定该命令正在做什么.

我是否映射了错误的命令?

编辑1:我也尝试使用键盘快捷键Alt-RUN(ReSharper的>单元测试>运行所有),以及手动点击菜单,发现这也导致所有单元测试不是找到appsetting,因此失败.单击"单元测试会话"中的"运行所有测试"图标(双绿色箭头)继续正常工作.

编辑2:我意识到我应该嘲笑一个单独的类,无论如何从配置文件中获取appsettings,所以这就是我现在正在做的事情.所以现在单元测试时没有依赖配置文件.

cit*_*att 3

这里发生了两件事。首先,会话窗口中的“运行所有测试”图标运行会话中的所有测试,而“运行所有测试”菜单项则运行解决方案中的所有测试。他们有相同的名字,这有点令人困惑,但考虑到上下文,这确实有意义。这就是为什么他们给出不同的结果。

\n\n

其次,在解决方案中运行所有测试时,可能找不到应用程序设置。这是由于测试运行程序进行的优化,它在同一个 AppDomain 中运行所有测试。这避免了为每个程序集创建新 AppDomain 的开销,但缺点是所有程序集仅使用一个 app.config。如果选择错误,您的应用程序设置就会丢失。

\n\n

您可以通过取消选中 ReSharper \xc2\xbb 选项 \xc2\xbb 单元测试 \xc2\xbb“为每个带有测试的程序集使用单独的 AppDomain”来禁用此功能。理想情况下,如果任何项目有 app.config,则应该禁用它 - 我添加了一个您可以投票和跟踪的功能请求:https://youtrack.jetbrains.com/issue/RSRP-428958

\n