簡體   English   中英

如何從Visual Studio以調試模式運行NUnit?

[英]How do I run NUnit in debug mode from Visual Studio?

我最近一直在構建一個C#的測試框架,我一直在努力。 我在我的工作區中設置了NUnit和一個新項目來測試組件。 如果我從Nunit(v2.4)加載我的單元測試,一切運行良好,但我已經達到了在調試模式下運行並設置一些斷點非常有用的地步。

我已經嘗試了幾個指南中的建議,這些指南都建議更改測試項目的“Debug”屬性:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

我在那里使用控制台版本,但也試過調用GUI。 當我嘗試開始調試時,兩者都給出了同樣的錯誤:

Cannot start test project 'TestDSP' because the project does not contain any tests.

這是因為我通常將\\ DSP.nunit加載到Nunit GUI中並且這是測試所在的位置嗎?

我開始認為問題可能是VS想要運行它自己的測試框架,這就是為什么它沒能找到NUnit測試?

編輯 :對於那些詢問測試裝置的人,TestDSP項目中的一個.cs文件看起來大致如下:

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}

...我對C#和NUnit測試框架都很陌生,所以我完全有可能錯過了一些關鍵的信息;-)

最終解決方案 :最大的問題是我使用過的項目。 如果您選擇Other Languages -> Visual C# -> Test -> Test Project ...當您選擇項目類型時,Visual Studio將嘗試使用它自己的測試框架。據我所知。 您應該選擇一個正常的 C#類庫項目,然后我選擇的答案中的說明將起作用。

當我需要調試我的NUnit測試時,我只需使用“Debug | Attach to Process”連接到NUnit GUI應用程序nunit-agent.exe ,然后從GUI運行測試。 我的測試中的任何斷點(或他們正在測試的代碼)都會被擊中。 我誤解了你的問題,還是會對你有用?

我使用與你嘗試Jon相同的技術,沒有/ assembly標志,即

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe

Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

TestDSP.dll是否包含所有TestFixtures?

由於我的測試項目不是解決方案中的啟動項目,我通過右鍵單擊測試項目並選擇Debug - > Start New Instance來運行我的測試

只需刪除看起來像的線條

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

從你的項目文件。 這條線基本上告訴VS.Net它是一個測試項目,因此“無法啟動測試項目”。 僅在這里,第一個Guid說“這是一個測試”,第二個說“它是C#”。 有關這些Guids的信息: http ://www.mztools.com/Articles/2008/MZ2008017.aspx

除了@Justin提供的答案之外,還有NUnit 2.6的更多細節。

使用NUnit 2.6附加到nunit.exe或nunit-console.exe而不是代理。 @Justin注意到的配置略有不同。 以下是nunit.exe.config中的示例(對於nunit-console.exe.config也是如此)。

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

對於.NET 4測試項目,要獲得斷點,您必須注釋掉或刪除v2.0行,如評論所示。 一旦我這樣做,我就能夠調試.NET 4.0測試項目。

如果您使用的是NUnit 2.4或更高版本,則可以將以下代碼放入SetUpFixture類中。 (您可以使用舊版本執行此操作,但您需要執行與SetUpFixture相同的任何操作,或將其復制到測試本身。)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}

Debugger.Launch()所做的是在單擊NUnit內部運行時顯示以下對話框。

JIT調試器對話框

然后,在項目打開的情況下選擇正在運行的visual studio實例(我的屏幕截圖中的第二個),然后將附加調試器,並且任何斷點或異常都將顯示在Visual Studio中。

在Nunit 3.0.1(我正在使用VS2013)中,從主菜單>測試> Windows>測試資源管理器打開。 然后在“測試資源管理器”中,右鍵單擊測試用例,您可能會看到: 在此輸入圖像描述

希望這可以幫助。

安裝TestDriven.NET ,它是Visual Studio的一個插件

從那里,您可以右鍵單擊您的單元測試程序集,然后單擊Run Tests運行整個套件,右鍵單擊TestFixture類以僅運行該類中的測試,或者右鍵單擊Test方法以僅運行該方法。

如果需要在調試模式下斷點測試,還可以選擇Test With Debugger。

試試NUnitit - 一個用於調試NUnit測試用例的開源Visual Studio Addin

首頁 - http://nunitit.codeplex.com/

從項目文件中刪除ProjectTypeGuids。

現在有圖片:

  1. 運行NUnit gui( 從此處下載2.6.2 ),然后轉到File -> Open Project

在此輸入圖像描述

  1. 從bin文件夾中選擇你的測試.dllC:\\......\\[SolutionFolder][ProjectFolder]\\bin\\Debug\\xxxxTests.dll

  2. 轉到Visual Studio Debug -> Attach to process (將打開附加到進程窗口)

  3. 從列表中向下滾動並選擇nunit-agent.exe然后單擊“ Attach

在此輸入圖像描述

  1. 此時,測試中的斷點應變為成熟的紅色(從空心處)。

  2. 點擊Nunit Gui上的Run ,你應該得到你的斷點...

希望這能為您節省一些時間。

如果項目路徑包含空格,例如路徑<path>\\bin\\Debug\\New Project\\Quotes.Domain.Tests.dll “New Project”,則將Start Option - > Command Line Arguments項目路徑用雙引號括起來。

我花了很多時間來解決這個問題。

如果您能夠使控制台/或GUI工作,但您的斷點沒有被擊中,可能是因為您的應用程序運行的是與NUnit不同的.NET運行時。 檢查您的nunit-console.exe.config / nunit.exe.config是否指定了運行時。(這些配置與nunit exe的目錄位於同一目錄中。)使用啟動節點指定運行時:

<configuration>
    <startup>
       <supportedRuntime version="4.0" />
    </startup>

關於帕特里克麥克唐納先生所說的話

由於我的測試項目不是解決方案中的啟動項目,我通過右鍵單擊測試項目並選擇Debug - > Start New Instance來運行我的測試

我試圖申請我的測試類庫但是在路徑上有一些錯誤,所以我試圖刪除'命令行參數',幸運的是它運行良好並且符合預期。

現在還有一個擴展“Visual NUnit”,它允許您從Visual Studio中運行測試,就像構建測試框架句柄一樣。 在擴展管理器中查看它。

打開Visual Studio --->你的項目--->選擇'屬性'--->選擇'調試' - >選擇'啟動外部程序'並在那里設置你的NUnit的路徑(例如:啟動外部程序= C :\\ Program Files \\ NUnit 2.6.2 \\ bin \\ nunit.exe)---->保存

設置完成后,單擊Debug

我和MSTest有同樣的錯誤。 我發現在“ 測試輸出”窗口中,某些測試具有重復的ID,無法加載。 我刪除了所有重復的測試,現在我能夠在啟動項目時運行測試。

對我來說,解決方案是適應nunit配置文件。 要將nunit與4.5-.Net框架和x64構建選項一起使用,我必須在啟動標記中添加一行(支持的運行時版本)。

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

然后,我可以通過右鍵單擊Testproject Debug - > Start new instance開始。 之前,我需要再次手動將項目附加到流程。

我的調試屬性是,C:\\ Program Files(x86)\\ NUnit 2.6.4 \\ bin \\ nunit.exe,帶有要測試的.dll位置的參數。

更多信息: 用於使用.NET 4.0進行測試的nunit

聽起來你正試圖使用​​錯誤的庫。 NUnit只能在您使用的dll包含TestFixtures時啟動。

TestDriven.Net上的+1。 我有機會多次使用它。 您可以根據http://testdriven.net/purchase_licenses.aspx上的許可證下載個人版本以進行評估。

看看這是否有幫助.. 如何在Visual Studio中添加NUnit

(RighteousRant)雖然我個人不喜歡這種方法..如果你在測試驅動你的代碼時需要一個調試器,那就是“氣味”,因為你沒有足夠的信心/知道你的代碼如何工作並且需要調試器告訴你。 如果做得好,TDD應該讓你免於需要調試器。 使用'將調試器附加到NUNit'僅在極少數情況下或當您涉及其他人的代碼時。

暫無
暫無

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

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