簡體   English   中英

在Visual Studio C#Express 2010中調試Nunit測試

[英]Debugging Nunit tests in Visual Studio C# Express 2010

我已經按照這個建議來調試NUnit測試。

http://www.blackwasp.co.uk/NUnitCSharpExpress.aspx

但是,我有幾個測試做Assert.Throws<...> ,這導致調試器在我正在測試的異常發生時中斷,當我真的希望它在這些調用之外發生異常時中斷。

如何讓調試器忽略這些方法中引起的異常?


編輯:我的事件嘗試了下面,這是行不通的!

[Test]
public void InstanciatingWithNullParameterThrowsException()
{
    try
    {
        Assert.Throws<ArgumentNullException>(() => new CachedStreamingEnumerable<int>(null));
        // This still throws and stops be being able to debug tests called after this one
    }
    catch
    {

    }
}

這對我有用(雖然在Visual Studio Professional中,不是Express,但我想這應該不重要)。

  • 按照Ninjapig的建議提出“例外”對話框。

  • 單擊Add...按鈕,打開“New Exception”對話框。

  • 在下拉框中選擇“公共語言運行時例外”
  • 在“編輯”框中輸入“NUnit.Framework.AssertionException”。
  • 單擊“ OK ”關閉“新例外”對話框。
  • 返回“異常”對話框,確保取消選中兩個復選框( Thrown User-unhandled )。

現在,調試器應該完全忽略NUnit斷言失敗(即拋出,捕獲或未捕獲, NUnit.Framework.AssertionException )。

更新 :這只會阻止進入調試器,它不能忽略異常本身; 即它不會改變實際的程序流程。 在更改或替換或封裝try-catch塊中的Assert-calls時,我認為沒有任何東西可以實現(至少不會自動)。

我不確定VS2010 Express是否有此選項,但您可以選擇中斷例外。

轉到“調試”菜單,然后選擇“例外” 菜單選項

從這里你可以選擇要打破的例外情況 例外選擇窗口

我最終引用了nunit-gui-runner.dll並調用它

NUnit.Gui.AppEntry.Main(new string[] { Dll });

這帶來了NUnit gui。 然后我可以運行我感興趣的特定測試。

我有同樣的問題。 雖然您的原始方法(不需要try...catch塊)適用於大多數異常類型,但ArgumentNullException不起作用。 我這樣修好了:

[Test]
public void InstanciatingWithNullParameterThrowsException()
{
    bool isArgumentNullExceptionThrown = false;
    try
    {
       new CachedStreamingEnumerable<int>(null);
    }
    catch (ArgumentNullException)
    {
        isArgumentNullExceptionThrown = true;
    }
    Assert.That(isArgumentNullExceptionThrown);
}

它並不優雅,但似乎確實有用。

暫無
暫無

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

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