2017-06-06 44 views
1

考慮帶有靜態lib項目和帶有單元測試的控制檯應用程序的Visual Studio C++解決方案。應用程序構建後步驟爲"$(TargetDir)$(TargetFileName)",以在每次成功編譯時自動運行測試。每次成功編譯後運行單元測試

當編譯成功,但測試失敗我想有時候對其進行調試,所以我需要從VS.運行它們問題是如果測試失敗,構建也被認爲失敗,所以VS拒絕運行。

一個不理想的解決方案是讓一個選項 enter image description here

所以當您嘗試運行構建失敗你

enter image description here

(該選項on默認但遲早大家點擊「不要再顯示此對話框」)

它的效果並不理想,因爲它是混亂的,它會觸發再次構建(編譯skipp因爲它是成功的,但測試再次運行,該選項是全球意義,它適用於所有您的項目,即使是那些不需要它的項目。這當然不是一個大問題,只是想知道人們是否有一些聰明的黑客。

例如,C#項目,打造「當構建更新項目輸出」事件有一個選項 - 天造地設的一對編譯後的單元測試。

該項目是跨平臺的,所以VS測試框架不適用。

+0

爲什麼是VS測試框架不適用?你在這裏要求一個不可避免的平臺特定的解決方案(假設你沒有在其他平臺上使用MSBuild)。 – Sneftel

+0

@Sneftel:單元測試是跨平臺的,我們使用Google Test進行測試。大多數的開發發生在VS的Windows上(我認爲這是非常流行的設置)。我對VS測試框架的瞭解是有限的,你是否看到它在這方面可以提供幫助? –

+0

如何使單元測試依賴於主項目的單獨項目?如果構建失敗,則主項目仍將標記爲構建。 – VTT

回答

0

我建議加入「生成文件項目」(文件 - >添加 - >新建項目 - > VISUAL C++ - >常規 - >生成文件項目),將包括「運行單元測試」命令。並使測試應用程序本身不包含自我運行。

那麼你的整個解決方案將失敗的試驗失敗,但測試本身會成功。

雖然你的情況並不常見。典型地,除了測試的應用程序,一個解決方案將包含「有用功應用」,然後單元測試會去預構建的「有用功應用」(其也可能對測試應用程序依賴)

相關問題