自動化單元工具EvoSuie的程式碼覆蓋報告
EvoSuite是由Sheffield等大學聯合開發的一種開源工具,用於自動生成測試用例集,生成的測試用例均符合Junit的標準,可直接在Junit中執行。得到了Google和Yourkit的支援。
生成的測試cases的執行依賴
由EvoSuite生成的測試cases需要EvoSuite框架的runtime包支援才能進行測試,因此要在工程中加入如下的Maven依賴
<dependency>
<groupId>org.evosuite</groupId>
<artifactId>evosuite-standalone-runtime</artifactId>
<version>1.0.6</version>
<scope>test</scope>
</dependency>
注意:EvoSuite的bytecode instrumentation和類似Jacoco這類工具在bytecode instrumentation上有可能有衝突,導致最後的覆蓋率統計都是0
bytecode instrumentation是改變了編譯器上生成的一個類的bytecode,用它可以完成如:計算一個方法被執行需要多長時間、改變它的執行流程等特別的流程。使用者可以新增/改變應用程式的位元組碼,自從有了這個功能後,就不需要修改整個應用程式源。
EvoSuite的位元組碼檢測
在EvoSuite的bytecode instrumentation有兩種選擇如下:
其一、在EvoSuite的 @RunWith(EvoRunner.class)中,會呼叫EvoSuite自己的classloader,而在這個過程中就呼叫它自己提供的bytecode instrumentation來完成對應的分析。這就導致了EvoSuite的bytecode instrumentation是早於其他程式碼覆蓋工具完成。
其二、EvoSuite會啟動一個Java的代理,代理會攔截全部的class loading,然後加入其EvoSuie的bytecode instrumentation。
EvoSuite目前預設是第一種,但是如果可以使用第二種,測者建議使用第二種,因為第二種可以有效避免和類似Jacoco工具的bytecode instrumentation的衝突,但是如果在測試在代理啟動前就執行了,那麼就不會起作用了範圍會報EvoSuite的錯誤。
在使用過程中,如果發現程式碼覆蓋報告全部是0,可以嘗試通過一下方式切換上面的兩種bytecode instrumentation方式。
@RunWith(EvoRunner.class)
@EvoRunnerParameters(mockJVMNonDeterminism = true,
useVFS = true, useVNET = true, resetStaticState = true,
separateClassLoader = true, useJEE = true)
修改separateClassLoader = true為false(從方式1 變成方式2),如果一切自效果,那麼可以再Maven的pom中加入對應的配置:
<configuration>
<extraArgs> -Duse_separate_classloader=false </extraArgs>
</configuration>
結語:
最後跟大家推薦一個學習資料分享群:175317069,裡面大牛已經為我們整理好了許多的學習資料,有自動化,介面,效能等等的學習資料!
人生是一個逆水行舟的過程,不進則退,我們們一起加油吧!
相關文章
- Java 程式碼覆蓋率調研報告Java
- 基於Jacoco的單元測試程式碼覆蓋率統計
- C++語言的單元測試與程式碼覆蓋率C++
- James Shore:不要使用單元測試的程式碼覆蓋率
- 如何制定介面自動化測試的覆蓋率?
- 單元測試接入覆蓋率
- 單元測試的覆蓋率計算
- 自動化測試如何實現全面覆蓋
- 自動化會提高測試覆蓋率,那測試覆蓋率是什麼?
- 開源專案核心程式碼單元測試 100% 覆蓋率實戰
- Mockito提升單元測試覆蓋率Mockito
- pHp程式碼覆蓋率PHP
- 用k*k的方格覆蓋單元格(i,j),單元格可以被覆蓋幾次?
- 程式碼覆蓋率與測試覆蓋率比較
- iOS 覆蓋率檢測原理與增量程式碼測試覆蓋率工具實現iOS
- Linux下lcov單元測試覆蓋率Linux
- 從零開始做Vue前端架構(6)單元測試 & 程式碼覆蓋率Vue前端架構
- 【Lua】實現程式碼執行覆蓋率統計工具
- 介面自動化測試的覆蓋和 Diff 平臺的悖論
- 在做服務端程式碼覆蓋率或者準備做程式碼覆蓋率的兄弟們,來聊聊???服務端
- 什麼是程式碼覆蓋率
- go 程式碼覆蓋率測試Go
- 單元測試必備:Asp.Net Core程式碼覆蓋率實戰,打造可靠應用 !ASP.NET
- 測試開發之單元測試-實現Git增量程式碼的Jacoco覆蓋率統計Git
- 介面自動化覆蓋的功能,但是導致漏測瞭如何處理
- JaCoCo計算程式碼覆蓋率原理
- 打造自己的php半自動化程式碼審計工具PHP
- Jacoco 與 Jenkins 整合獲取覆蓋率報告Jenkins
- 介面自動化報告的問題
- 進化的覆蓋率-程式碼實時染色系統 - 周為 / 翟帥
- 【譯】Visual Studio Enterprise 中的程式碼覆蓋率特性
- 谷歌檢視CSS程式碼被誰覆蓋谷歌CSS
- 如何覆蓋元件的自帶樣式元件
- 學校報告廳無線覆蓋解決方案
- idea2022.1 檢視單測覆蓋率展示分支覆蓋率Idea
- 搭建Karma+Jasmine的自動化單元測試ASM
- [lua][openresty]程式碼覆蓋率檢測的解決方式REST
- idea中有些程式碼被黃色背景覆蓋Idea