簡體   English   中英

調試在NUnit下運行的測試

[英]Debugging tests running under NUnit

我有一個.NET 4.0 C#解決方案和一個在NUnit下運行單元測試的測試項目。 NUnit二進制文件是v3.5。

我可以很好地運行測試,但不能在visual studio中設置斷點和單步。 我猜這是由.NET版本中的不匹配引起的。 有沒有辦法使用nunit for v3.5單步執行v4.0測試程序集?

問題是,除非你另外告訴它,否則NUnit會在確定必要時生成一個子進程來運行測試。 如果您在Process Explorer中查看它,您可以看到“nunit-console.exe”*生成“nunit-agent.exe”*。 Visual Studio調試器不會自動附加到子進程。

在這種情況下,我認為版本不匹配是它選擇啟動子流程的原因。 解決此問題的最簡單方法是編輯“nunit-console.exe.config”*以更改<supportedRuntime>值的集合。 應該已經有一個注釋標記您應注釋掉的行,以強制它作為.NET 4.0運行:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />
  <supportedRuntime version="v4.0.30319" />
</startup>

一旦你改變它,第一個NUnit進程已經是.NET 4.0,它不需要產生一個子進程。 如果您想確定,請指定/process=Single和NUnit將在單個進程中運行,如果不能,則立即失敗。

* - 如果您需要使用x86版本,請替換:

nunit-console.exe        -> nunit-console-x86.exe
nunit-agent.exe          -> nunit-agent-x86.exe
nunit-console.exe.config -> nunit-console-x86.exe.config

如果它對某人有幫助,我知道這是4歲但我在這里按照答案,他們是有用的。 即使我的答案是針對另一個完整版本的NUnit,但對於像我這樣的人來說,我只是發現了這個,我通過Manage NuGet Packages安裝了NUnit和NUnit控制台......(屏幕截圖中的第一和第三個選項) 在此輸入圖像描述 並在VS2015社區版中配置我的測試項目屬性調試選項卡(請參閱下面的屏幕截圖)以運行nunit3-console.exe,該文件位於安裝“NUnit Console”時自動創建的\\ packages文件夾中我添加了我的測試庫dll和命令行開關--wait(它提示開發人員“按任意鍵關閉”以便讓你看到結果),更重要的是 - 在自動附加測試庫.NET代碼的進程中你的破發點被擊中了。

在此輸入圖像描述

請注意,要運行NUnit3控制台應用程序,請將測試項目設置為啟動項目。

另一個選擇是使用http://testdriven.net/通過Visual Studio運行測試,你可以在測試上點擊一個斷點,然后右鍵單擊 - >運行測試 - >調試器。

Resharper允許您在調試時逐步執行單元測試。 但我不認為你可以用Visual Studio做同樣的事情。 嘗試安裝Resharper的試用版,然后嘗試調試測試。

我注意到控制台應用程序,但您應該發現可以手動啟動NUnit的GUI版本,然后從Visual Studio中的調試器附加到nunit-agent進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM