2016-05-12 27 views
0

我目前正在爲我的公司重構qt/C++應用程序的某些部分,他們完全沒有單元測試。如何在編譯時排除單元測試

我想添加一些,但我其實從來沒有做過測試的設置,所以我不是100%確定最好的方式來進行。下面是我在想什麼(隨意對此置評,但它不是我的主要問題)

  • ,因爲我們使用QT我將使用QTEST庫,我不想其他的lib添加到該項目
  • 在src目錄下的每個子文件夾,我會添加與測試類的測試文件夾對應於目錄中找到的類(我們的目標是讓測試類接近他們測試的內容)

我的問題是:我該如何(或應該)阻止測試類在發佈時被編譯/包含? 我的意思是,如果我設法得到一個大的測試覆蓋率,這將是大量的新的測試代碼來編譯,這對應用程序本身沒有用處。我們可以(我們是否應該)在發行版本中排除此代碼?常用的做法是什麼(如果有的話)?

+1

作爲解決方案的一部分,您可以將單元測試設置爲單獨項目嗎?這通常是從我的理解完成.net項目。只要你的「部署的項目」不包含對單元測試項目的引用(它不應該),它就不應該成爲部署包的一部分。對不起,如果這是遠離基地,在做出假設之前沒有用過C++。 – Kritner

+0

是的,它可以是一個解決方案,我發現幾個例子創建一個特定的cmake文件來創建一個單元測試項目。但我認爲這將意味着我必須將測試類放在特定的單獨測試文件夾下,並且我覺得如果所有測試都在另一個位置,我們很快就會忘記更新它們。 –

+1

那麼,理想情況下運行單元測試是構建過程的一部分。如果你的單元測試正在運行並破壞,你很快就會注意到:P。隨着實現的急劇變化,它可能會破壞一些單元測試。對於新功能,它只需要成爲正常開發過程的一部分。 – Kritner

回答

1

如果您正在使用CMake,在您的CMakeLists中,您可以定義在當前版本中使用哪些文件。

在同一個CMake中,可以定義一個包含測試文件的不同目標。文件的位置無關緊要,它們可以與代碼位於同一位置

相關問題