2014-12-03 54 views
1

我們有我們的QA團隊寫道編碼的UI測試的Windows客戶端。我試圖讓OpenCover工作,以便我們可以看到他們的測試真的有多大的應用程序。他們在MSTest框架之上使用自定義框架編寫測試。使用OpenCover運行編碼的UI測試未收集應用程序代碼

他們的框架使用ApplicationUnderTest.Launch啓動該應用程序爲不同用戶測試安全設置。我可以捕獲測試dll的覆蓋範圍,但它可以自行應用。

我強迫應用程序建立在32位,確信所有PDBS中存在的文件夾,幷包含在TARGETDIR的PDB目錄中。

有其他人看過這個問題嗎?我也嘗試用包裝exe替換我的批處理文件,並獲得了覆蓋,但不是主應用程序。一切都以用戶身份運行,因爲他們也是機器上的管理員。

我運行的命令是: C:\ Users \ kkindt.CORP \ AppData \ Local \ Apps \ OpenCover \ OpenCover.Console.exe -register「-target:C:\ Program Files(x86)\微軟的Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \微軟\ TestWindow \ vstest.console.exe 「 - 輸出:C:\代碼覆蓋率\ CollectionResults \ CodedUICover.xml」 -targetargs:C:\代碼覆蓋率\測試\ EllisWinAppTest.dll /平臺:86 /框架:framework40 /測試:LaunchEllisTest」

回答

0

我強烈懷疑這是由於你如何測試啓動應用程序

OpenCover是一個.NET分析器和.NET應用程序與啓動探查器連接需要一些環境變量可用於新進程。我懷疑ApplicationUnderTest.Launch不會傳播所有當前的環境變量,因此分析器不會啓動,因此不會報告覆蓋率。

爲了得到這個工作,你應該考慮使用一個使用的ProcessStartInfo的ApplicationUnderTest.Launch超載,那麼你就需要傳播下列環境變量

  • COR_PROFILER
  • COR_ENABLE_PROFILING
  • OpenCover_Profiler_Key
  • OpenCover_Profiler_Namespace
  • OpenCover_Profiler_Threshold
  • OpenCover_Profiler_TraceByTest(如果可用)

Cor_*由運行時需要啓動探查和OpenCover_*項是允許探查器和主機找到對方 - 一個list of these environment variables都可以在GitHub

+0

你是先生,是男人。添加了一個循環來將變量傳播到啓動過程,並且收集得很好。感謝您的幫助! – Kevin 2014-12-08 21:51:29

+0

不錯 - 我想知道是否可以添加到OpenCover自動注入這些信息如果不是已經存在 - 可能是一個不錯的功能 – 2014-12-09 00:30:05

+0

@Kevin - 我期待它添加到OpenCover但有麻煩重複你的問題,你會[可能enagage](https://github.com/OpenCover/opencover/issues/244)與我們合作,使這一無縫融合? – 2015-02-13 23:10:47

相關問題