[英]How to debug Nunit test in Visual Studio 2010
我在調試VisualStudio的NUnit測試時遇到問題。 我創建了一個空項目(控制台應用程序),然后我添加了對NUnit庫的引用並編寫了一個簡單的測試。
namespace ReimplementingLinq.Tests
{
[TestFixture]
public class WhereTest
{
[Test]
public void SimpleFiltering()
{
int[] source = { 1, 2, 3, 4, 2, 8, 1 };
var result = source.Where(val => val < 4);
int[] expected = {1,2,3,4};
CollectionAssert.AreEqual(expected, result);
}
}
}
接下來我遵循此鏈接中給出的建議如何從Visual Studio以調試模式運行NUnit? 但是那個主題的解決方案都不適合我。 執行測試時沒有遇到任何斷點。 我嘗試通過附加到流程以及使用帶參數的外部程序運行項目來測試解決方案。
我該怎么做才能調試我的單元測試?
只需配置您的測試項目,以便在按F5 (開始調試)或Ctrl-F5 (無需調試時啟動)時,它將自動啟動NUnit GUI並執行其中的所有測試。 如果遇到任何斷點,您也可以簡單地調試測試代碼。
帶圖像的分步指南向您展示了如何操作。
懶惰是所有發明的母親 :-)
假設您使用的是Visual Studio以外的Visual Studio版本,則可能會使用TestDriven.NET 。
安裝后
遺憾的是,您不能將此方法用於Visual Studio的Express版本,因為TestDriven.NET是Visual Studio的插件,而Express版本不支持使用插件
您還可以通過控制台應用程序在調試器中運行測試:
在控制台應用程序的Main方法內部,創建測試fixuture的新實例,然后調用其中一個測試方法。 例如,如果我有一個名為MyTests的夾具和一個名為Test1的測試,我會寫:
var myTests = new MyTests(); myTests.Test1();
在創建MyTests
類的實例的行處設置斷點,然后按F5
如果您使用的是NUnit 2.4,則可以將以下代碼放入SetUpFixture
類中。 (您可以使用舊版本執行此操作,但您需要執行與SetUpFixture
相同的任何操作,或將其復制到測試本身。)
[SetUpFixture]
public class SetupFixtureClass
{
[SetUp]
public void StartTesting()
{
System.Diagnostics.Debugger.Launch();
}
}
Debugger.Launch()
所做的是在單擊NUnit內部運行時顯示以下對話框。
然后,在項目打開的情況下選擇正在運行的visual studio實例(我的屏幕截圖中的第二個),然后將附加調試器,並且任何斷點或異常都將顯示在Visual Studio中。
與NUnit 2.5.3有同樣的問題,並最終找到了不同的解決方案。 看看這是否適合您:
打開NUnit GUI並進入“工具”菜單“設置...”對話框。 在Settings樹中選擇Test Loader部分的Assembly Isolation子部分。 在NUnit進程中將Default Process Model設置為Directly。
我將它設置為在單個單獨的進程中運行測試,這就是為什么調試器無法將我測試的dll鏈接到用於調試它的符號。 我仍然使用每個程序集使用sperate AppDomain作為我的默認域使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.