Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
Visual studio NUnit正在忽略runsettings文件中的DomainUsage_Visual Studio_Nunit_Nunit 3.0_Vstest_Visual Studio Test Runner - Fatal编程技术网

Visual studio NUnit正在忽略runsettings文件中的DomainUsage

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

我正在Visual Studio中使用带有NUnit的“测试资源管理器”和
.runsettings
文件(通过在GUI中选择“选择设置文件”选项指定)运行测试

我的设置文件(名为
mytests.runsettings
)是:


真的
真的
没有一个
我已经验证了它正在加载这个文件(通过添加框架节点并将其设置为伪版本进行验证,然后导致错误)

但无论我做什么,它都不能在没有AppDomain的情况下运行

从命令行运行会起作用:

nunit3-console.exe--域=无--在进程MyTests.dll中


我需要做什么才能让它在NUnit中使用该设置?

我不相信你能做到

  • runsettings文件中的
    NUnit
    下没有可识别的
    DomainUsage
    元素
    DomainUsage
    是一个内部使用的属性,如果设置该属性,则将使用该属性。但你不能这样设置。您的
    DomainUsage
    元素只是被忽略了

  • 如果适配器收到您的
    DisableAppDomain
    设置,那么它将
    DomainUsage
    设置为
    None
    。然而,我不相信它真的收到了

  • 第2点需要一些解释。请注意,我已经有几年没有使用适配器了,我将使用内存,但在这里它是

    添加了
    DisableAppDomain
    设置,以允许Visual Studio强制NUnit尝试运行而不使用
    AppDomain
    。测试资源管理器应该进行设置,以便能够以这种方式运行,即确保当前域中的所有内容都已可用

    为了防止滥用该功能,我相信TestExplorer总是覆盖任何用户提供的设置。同样,这是对几年前所做工作的记忆,但似乎你看到的结果证实了这一点

    过去这一决定的基本原理是TestExplorer完全负责设置用于运行测试的流程和AppDomain。用户没有办法影响这一点,NUnit也没有。当然,当使用console runner时,情况并非如此——控件掌握在用户手中

    另一个需要调查的问题是,为什么您觉得需要在不创建测试的情况下运行AppDomain。但这可能是另一个问题。:-)

    我会请一些可能比我记忆力更好的人也来看看这个

    更新:

    @现在维护适配器的Terje回答并确认没有办法在runsettings文件中设置DomainUsage,或者在测试适配器下运行时我们知道的任何其他方式。这些文件已被更正,以避免暗示这是可能的


    我们相信,但尚未通过实验证实,TestExplorer在使用此设置抑制测试适配器创建AppDomain时会创建自己的AppDomain。

    我不相信您能做到这一点

  • runsettings文件中的
    NUnit
    下没有可识别的
    DomainUsage
    元素
    DomainUsage
    是一个内部使用的属性,如果设置该属性,则将使用该属性。但你不能这样设置。您的
    DomainUsage
    元素只是被忽略了

  • 如果适配器收到您的
    DisableAppDomain
    设置,那么它将
    DomainUsage
    设置为
    None
    。然而,我不相信它真的收到了

  • 第2点需要一些解释。请注意,我已经有几年没有使用适配器了,我将使用内存,但在这里它是

    添加了
    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>