Sna*_*ake 11 c# testing nunit unit-testing ninject
我似乎遇到了一个问题,我们正在使用的应用程序使用Ninject内核,并包含一个特定的配置,该配置是使用WCF调用的内容(username,token ...)收集的.
基于特定配置,用户被分配了应用程序的权限,这通过Ninject内核中的特定实例进行屏蔽.
我们不能只重新组合Ninject内核,我们想要做的是运行几个Nunit测试,但是在一个单独的应用程序域中运行它们(每次使用不同的设置重新创建内核).
我只找到了在不同应用领域运行整个测试项目的方法,但没有测试每个测试.
有办法解决这个问题吗?
不幸的是,Ninject配置不在我们这边,我们必须以这种方式"生活".
Fri*_*Guy 32
我需要做同样的事情,所以我创建了一个基本上接受当前测试并在新的AppDomain中重新执行它的库.它是一个名为NUnit.ApplicationDomain的nuget包,是开源的.
示例代码:
[Test, RunInApplicationDomain]
public void Method()
{
Console.WriteLine("I'm in a different AppDomain")
}
Run Code Online (Sandbox Code Playgroud)
我认为没有办法解决它而不重写NUnit代码的部分内容.我已经进入NUnit代码已经有一段时间了,但我很确定主应用程序域加载部分没有改变.
NUnit通常使用两个应用程序域.运行NUnit时创建的默认值和加载测试程序集及其引用的程序集的单独一个.这样做的主要原因是允许卸载测试组件.你无法卸载一个DLL,但你可以卸载一个appdomain.
您可以在每次测试时运行NUnit并在命令行上传递测试,但这很难看,我不确定它会有所帮助.
也可以在NUnit 2.6中利用Action Attributes,但是你要在那里做很多工作.
您也可以在设置方法中创建一个新的应用程序域,并在每个测试中调用它.尴尬但可能.
对不起,我没有更完整的答案.
| 归档时间: |
|
| 查看次数: |
7343 次 |
| 最近记录: |