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