繁体   English   中英

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

[英]Run unit tests in different appdomain with NUnit

我似乎遇到了一个问题,我们正在使用的应用程序使用Ninject内核,并包含一个特定的配置,该配置是使用WCF调用的内容(username,token ...)收集的。

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

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

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

有办法解决这个问题吗?

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

我需要做同样的事情,所以我创建了一个基本上接受当前测试并在新的AppDomain中重新执行它的库。 它是一个名为NUnit.ApplicationDomain的nuget包,是开源的

示例代码:

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

我认为没有办法解决它而不重写NUnit代码的部分内容。 我已经进入NUnit代码已经有一段时间了,但我很确定主应用程序域加载部分没有改变。

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

您可以在每次测试时运行NUnit并在命令行上传递测试,但这很难看,我不确定它会有所帮助。

也可以在NUnit 2.6中利用Action Attributes ,但是你要在那里做很多工作。

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

对不起,我没有更完整的答案。

我不完全确定你的问题。 但是,您似乎需要某种自定义实现。 您是否考虑过自定义测试属性? 然后可以配置每个属性在不同的App域中运行? 我只是提出了一些想法,但可能有更好的方法来做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM