3

我目前運行到以下問題測試:VSTest.console過濾本地C++單元的屬性

我們介紹了單元測試到我們本地C++應用程序通過使用本地微軟單元測試框架包含在Visual Studio 2015年Microsoft::VisualStudio::CppUnitTestFramework

要啓動視覺工作室內部的單元測試我們使用Test-Explorer如可以在圖像1中可以看出通過添加method attributeTest-Method(如圖圖像2)Test-Explorer允許進行排序和由屬性的過濾器(如罐在圖3中可見)。

enter image description here

所有這一切工作沒有問題。當我們試圖將這些單元測試用於我們的持續集成系統(CI)時,我們開始遇到問題。

要從控制檯啓動單元測試,我們使用vstest.console.exe,它位於:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe。的官方文檔可以發現Here.

下面的截圖顯示使用控制檯時測試如何成功: enter image description here

添加記錄器和outputing文件帶有.trx作品也很好。然而不是工作是應用過濾器來確定具有特定屬性的測試。根據文檔,應該可以使用/TestCaseFilter:-開關。然而下面的屏幕截圖示出了所產生的誤差:

enter image description here

它轉化爲:「,因爲它包含無效的一個或多個性質沒有測試匹配濾波器(TakesLong)指定包含有效屬性過濾器表達式(TestCategory,Priority,FullyQualifiedName,Name)並重試。「

有沒有人知道這個問題或有一個想法如何解決它?最終目標是能夠排除某些測試(需要很長時間/需要硬件加密狗等)。

最好的問候,LorToso

+0

在VS中使用Test Explorer對C++進行單元測試有很好的寫法,如果你嘗試這樣做,你可以使用Text Explorer來過濾你的單元測試嗎?這裏是文檔: https://msdn.microsoft.com/en-us/library/hh270864.aspx –

+0

@ PedroG.Dias是的,我可以使用測試exploter來過濾單元測試。然而,當試圖在Visual Studio之外運行測試時(使用控制檯) – LorToso

回答

0

我就遇到了這個問題太多,而可悲的是它看起來像我們只是運氣不好。 vstest.console.exe只支持C++和C#的有限數量的過濾器。

我認爲我要走的方法是將測試分隔到不同的模塊中,這樣我就可以運行夜間單元測試以及僅用於發佈的CI構建和集成測試(如需要數據庫)。

或者,您可以將它們按同一模塊中的名稱空間拆分,並使用FullyQualifiedName過濾器。不幸的是,沒有'!〜'條件,所以你可能需要以某種方式解決這個問題。