Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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
C# 使用NUnit在不同的appdomain中运行单元测试_C#_Unit Testing_Testing_Nunit_Ninject - Fatal编程技术网

C# 使用NUnit在不同的appdomain中运行单元测试

C# 使用NUnit在不同的appdomain中运行单元测试,c#,unit-testing,testing,nunit,ninject,C#,Unit Testing,Testing,Nunit,Ninject,我似乎遇到了一个问题,我们正在使用的应用程序使用一个Ninject内核,并且包含一个特定的配置,该配置与WCF调用的内容(用户名、令牌…)一起收集 基于用户在应用程序上的特定配置被分配了权限,这通过Ninject内核中的特定实例进行屏蔽 我们不能仅仅重新组合Ninject内核,我们想做的是运行几个Nunit测试,而是在一个单独的应用程序域中运行每个测试(每次使用不同的设置重新创建内核) 我只找到了在不同的应用程序域中运行整个测试项目的方法,但没有找到每次测试的方法 有办法解决这个问题吗 不幸的是

我似乎遇到了一个问题,我们正在使用的应用程序使用一个Ninject内核,并且包含一个特定的配置,该配置与WCF调用的内容(用户名、令牌…)一起收集

基于用户在应用程序上的特定配置被分配了权限,这通过Ninject内核中的特定实例进行屏蔽

我们不能仅仅重新组合Ninject内核,我们想做的是运行几个Nunit测试,而是在一个单独的应用程序域中运行每个测试(每次使用不同的设置重新创建内核)

我只找到了在不同的应用程序域中运行整个测试项目的方法,但没有找到每次测试的方法

有办法解决这个问题吗


不幸的是,Ninject配置不在我们这边,我们必须以这种方式“活”下去。

我认为没有办法在不重新编写部分NUnit代码的情况下解决它。我已经有一段时间没有使用NUnit代码了,但是我很确定主应用程序域加载部分没有改变

NUnit通常使用两个应用程序域。运行NUnit时创建的默认值,以及加载测试程序集及其引用的程序集的单独值。这样做的主要原因是允许卸载测试组件。您不能卸载dll,但可以卸载appdomain

您可能能够在每个测试中运行NUnit一次,并通过命令行上的测试,但这很难看,我不确定它是否会有帮助

在NUnit 2.6中也可以利用它,但要做到这一点,您需要做大量的工作

您还可以在安装方法中创建一个新的应用程序域,并在每次测试中调用它。尴尬但可能


很抱歉,我没有更完整的答案。

我对你的问题不太确定。然而,您似乎需要某种自定义实现。您是否考虑过自定义测试属性?那么是否可以将每个属性配置为在不同的应用程序域中运行?我只是在构思一些想法,但可能有更好的方法来实现这一点。

我需要做完全相同的事情,因此我创建了一个库,它基本上接受当前测试并在新的AppDomain中重新执行它。这是一个名为和的nuget包

示例代码:

[Test, RunInApplicationDomain]
public void Method()
{
  Console.WriteLine("I'm in a different AppDomain")
}

有针对.NET Core的解决方案吗?没有,目前没有。我唯一能想到的是另一个过程,但那真的很沉重