[英]Resharper - NUnit - unable to run unit tests because code and test project binaries in different locations
[英]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.