Visual studio NUnit正在忽略runsettings文件中的DomainUsage
我正在Visual Studio中使用带有NUnit的“测试资源管理器”和Visual studio NUnit正在忽略runsettings文件中的DomainUsage,visual-studio,nunit,nunit-3.0,vstest,visual-studio-test-runner,Visual Studio,Nunit,Nunit 3.0,Vstest,Visual Studio Test Runner,我正在Visual Studio中使用带有NUnit的“测试资源管理器”和.runsettings文件(通过在GUI中选择“选择设置文件”选项指定)运行测试 我的设置文件(名为mytests.runsettings)是: 真的 真的 没有一个 我已经验证了它正在加载这个文件(通过添加框架节点并将其设置为伪版本进行验证,然后导致错误) 但无论我做什么,它都不能在没有AppDomain的情况下运行 从命令行运行会起作用: nunit3-console.exe--域=无--在进程MyTests.d
.runsettings
文件(通过在GUI中选择“选择设置文件”选项指定)运行测试
我的设置文件(名为mytests.runsettings
)是:
真的
真的
没有一个
我已经验证了它正在加载这个文件(通过添加框架节点并将其设置为伪版本进行验证,然后导致错误)
但无论我做什么,它都不能在没有AppDomain的情况下运行
从命令行运行会起作用:
nunit3-console.exe--域=无--在进程MyTests.dll中
我需要做什么才能让它在NUnit中使用该设置?我不相信你能做到
NUnit
下没有可识别的DomainUsage
元素DomainUsage
是一个内部使用的属性,如果设置该属性,则将使用该属性。但你不能这样设置。您的DomainUsage
元素只是被忽略了DisableAppDomain
设置,那么它将将DomainUsage
设置为None
。然而,我不相信它真的收到了DisableAppDomain
设置,以允许Visual Studio强制NUnit尝试运行而不使用AppDomain
。测试资源管理器应该进行设置,以便能够以这种方式运行,即确保当前域中的所有内容都已可用
为了防止滥用该功能,我相信TestExplorer总是覆盖任何用户提供的设置。同样,这是对几年前所做工作的记忆,但似乎你看到的结果证实了这一点
过去这一决定的基本原理是TestExplorer完全负责设置用于运行测试的流程和AppDomain。用户没有办法影响这一点,NUnit也没有。当然,当使用console runner时,情况并非如此——控件掌握在用户手中
另一个需要调查的问题是,为什么您觉得需要在不创建测试的情况下运行AppDomain。但这可能是另一个问题。:-)
我会请一些可能比我记忆力更好的人也来看看这个
更新:
@现在维护适配器的Terje回答并确认没有办法在runsettings文件中设置DomainUsage,或者在测试适配器下运行时我们知道的任何其他方式。这些文件已被更正,以避免暗示这是可能的
我们相信,但尚未通过实验证实,TestExplorer在使用此设置抑制测试适配器创建AppDomain时会创建自己的AppDomain。我不相信您能做到这一点
NUnit
下没有可识别的DomainUsage
元素DomainUsage
是一个内部使用的属性,如果设置该属性,则将使用该属性。但你不能这样设置。您的DomainUsage
元素只是被忽略了DisableAppDomain
设置,那么它将将DomainUsage
设置为None
。然而,我不相信它真的收到了DisableAppDomain
设置,以允许Visual Studio强制NUnit尝试运行而不使用AppDomain
。测试资源管理器应该进行设置,以便能够以这种方式运行,即确保当前域中的所有内容都已可用
为了防止滥用该功能,我相信TestExplorer总是覆盖任何用户提供的设置。同样,这是对几年前所做工作的记忆,但似乎你看到的结果证实了这一点
过去这一决定的基本原理是TestExplorer完全负责设置用于运行测试的流程和AppDomain。用户没有办法影响这一点,NUnit也没有。当然,当使用console runner时,情况并非如此——控件掌握在用户手中
另一个需要调查的问题是,为什么您觉得需要在不创建测试的情况下运行AppDomain。但这可能是另一个问题。:-)
我会请一些可能比我记忆力更好的人也来看看这个
更新:
@现在维护适配器的Terje回答并确认没有办法在runsettings文件中设置DomainUsage,或者在测试适配器下运行时我们知道的任何其他方式。这些文件已被更正,以避免暗示这是可能的
我们相信,但尚未通过实验证实,TestExplorer在使用此设置抑制测试适配器创建AppDomain时,会创建自己的AppDomain。此答案是上面@charlie的答案的后续,只是需要更多的空间。 我已经根据是否设置了DisableAppDomain检查了正在创建的域。 当禁用应用程序域未设置时,NUnit将使用applicationbase和友好名称创建appdomain,如下所示: NUnitCheckDomain是测试dll 当禁用应用程序域设置为时,NUnit不再
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<DisableAppDomain>True</DisableAppDomain>
</RunConfiguration>
<ForceListContent>true</ForceListContent>
<NUnit>
<DomainUsage>None</DomainUsage>
</NUnit>
</RunSettings>