AppDomain appDomain = AppDomain.CreateDomain("WorkerDomain " + Thread.CurrentThread.Name);
var domain = (AppDomainWorker)appDomain.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, typeof(AppDomainWorker).FullName);
domain.Executor();
internal class AppDomainWorker
{
internal object Executor()
{
// your unit test can run here
}
}
兩個更重要的事情:
1)您可能需要標記類作爲MarshalByRefObject
,並覆蓋InitializeLifetimeService
方法有一個對象更長生命或存在。如果您必須在應用程序域之間進行通信,則需要使用MarshalByRefObject
。有關此詳細信息,請閱讀Microsoft遠程處理概念。
2)某些時候我們可能需要在AppDomain中進行程序集解析,如果它沒有將父程序集中的程序集加載,但是在極少數情況下。
對於每個測試(即測試方法)或每個文本「夾具」 –
@PeterRitchie對於每個測試方法(情況) – Flagbug
http://patrick.lioi.net/2013/04/18/isolating-execution/ –