2011-09-30 49 views
5

有沒有一種方法可以使用NUnit和本地C++和託管C++的混合項目設置斷點並逐步遍歷它們?使用NUnit在VS 2010中調試本地/託管C++

我有我的SUT(被測軟件)配置爲靜態庫(本機C++) 我有我的單元測試套件作爲單獨的項目配置爲一個DLL,這取決於我以前說過的庫。我還將這個庫添加爲我的單元測試項目的參考。

我的測試在NUnit中運行良好,斷點只是不起作用。

同樣,有沒有辦法讓斷點與Native/Managed C++一起使用NUnit?

+0

如果在未使用C++/CLI(託管C++)的情況下測試代碼,那麼爲什麼不使用簡單的C++測試框架呢?有沒有特別需要使用NUnit? – Daemin

+0

@Daemin,如果您的代碼以C#開頭,然後以本機結尾,那麼爲什麼您會使用兩個框架來測試相同的路徑? C#可以通過託管C++橋接進行非託管 – devshorts

+0

@devshorts從描述中他們已經有了一個他們想測試的本地C++靜態庫,但是他們已經爲它編寫了C#測試。用C#測試框架測試原生C++代碼似乎有點奇怪。 – Daemin

回答

1

最簡單的方法是設置一個自定義工具條目,指定NUnit的路徑作爲命令。對於VS2003 C#項目,可以使用$(TargetPath)作爲參數,對於初始目錄可以使用$(TargetDir)

使用Visual Studio VS2005,這變得有點困難,因爲該版本改變了'Target'宏的含義,因此它們現在指向中間'obj'目錄而不是'bin'目錄之一的最終輸出。這裏有兩個版本的工作方式:

$(ProjectDir)$(ProjectFileName)打開VS Project而不是程序集。如果您使用這種方法,請確保相應地重命名您的配置文件,並將其放在與VS項目文件相同的目錄中。

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)直接運行程序集。請注意,這需要硬編碼部分路徑,包括配置。

如果您想調試您的測試,請使用Visual Studio Debug | Processes ...菜單項在啓動後附加到NUnit,並在運行測試之前根據需要在測試代碼中設置斷點。

+0

我試圖讓斷點與C++而不是C#一起工作。另外,當我運行我的測試時,將VS附加到NUnit不會停止在任何斷點上。 – NexAddo