簡體   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