安卓 Jacoco 精準測試應用

2022-09-01 06:42:07 字數 3647 閱讀 2572

jacoco-精準測試

不依賴原始碼執行

介面測試也能直**出覆蓋度

知道什麼樣的用例保證哪塊的**,更好的精準度測試

1.實現jacoco instrumentation操作(後面通過命令直接啟動該instrument,最下面有),注意最後啟動了 instrumentedactivity

public

class jacocoinstrumentation extends

instrumentation

@override

public

void

oncreate(bundle arguments)

catch

(ioexception e)

}if (arguments != null

) mintent = new intent(gettargetcontext(), instrumentedactivity.class

); mintent.setflags(intent.flag_activity_new_task);

start();

}

2.在instrumentedactivity  ondestroy設定監聽,當觸發的時候觸發生成jacoco覆蓋率檔案

許可權

instrumentedactivity extends

mainactivity

@override

public

void

ondestroy() }}

3.觸發監聽的操作

private

void

generatecoveragereport()

catch

(exception e)

finally

catch

(ioexception e) }}

}

啟動:2.1註冊instrumentation,通過instrumentation啟動被測應用

adb shell am instrument com.jacs.zhaotang.jscscs/test.jacocoinstrumentation

android:handleprofiling="true"android:label="coverageinstrumentation"android:name="test.jacocoinstrumentation"android:targetpackage="com.jacs.zhaotang.jscscs"/>

3.把生成的jacoco覆蓋率檔案放在指定資料夾,用gradle生成htmlreport

執行gradlew jacocotestreport

通過廣播驅動生成ec:

1.註冊廣播

public

void

onreceive(context context, intent intent)

else

}

傳送廣播:adb shell am broadcast -a com.jacs.zhaotang.jscscs.operationreceiver --es url 'sdsd'

解析xml:

需要提取的覆蓋率型別

public

static

final string instruction="instruction";

public

static

final string branch="branch";

public

static

final string line="line";

public

static

final string complexity="complexity";

public

static

final string method="method";

public

static

final string coveres=;

//

獲取當前節點的所有屬性節點

listlist =node.attributes();

//遍歷屬性節點

for(attribute attr : list)

if (attr.getname().equals("covered") &&is) }}

獲取a和b兩次**的覆蓋率

method -  unregisterobserver ---  instruction-covered ----- 14method -  getlastlocation ---  instruction-covered ----- 18method -  setcachedlocation ---  instruction-covered ----- 0method -  getcachedlocation ---  instruction-covered ----- 11method -  setcachedlocationtime ---  instruction-covered ----- 0method -  getcachelocationtime ---  instruction-covered ----- 11method -  hascachedlocation ---  instruction-covered ----- 10method -  ---  instruction-covered ----- 6method -  onreceive ---  instruction-covered ----- 10spent  785  //消耗時間

列印a/b兩次的不同覆蓋值

精準測試與開源工具Jacoco的覆蓋率能力大PK

覆蓋率技術可以說是測試理論中最基本的技術體系,但由於傳統覆蓋率並沒有很好的適應新型軟體開發模型,導致應用場景越來越窄。比如 jacoco等同類工具,仍停留在傳統白盒覆蓋技術的技術演化層面,目前基本僅適用在瀑布模式的開發體系下。最新的測試黑馬技術 精準測試 覆蓋率功能是企業級 面向敏捷迭代場景 全新的...

安卓移動應用開發考題 移動應用開發安卓選題

移動應用開發課程大作業選題 注意 以下所有系統均要實現 1 管理者的登陸 2 使用者的註冊和登陸 3 資料的儲存和提取 第 題可以不要求 1 管理者的登陸 和 2 使用者的註冊和登 陸 不要附上核心 全文漢字字數不少於 每個班內不能有重複選題,班級內部每 人組成一組選題。學生提交大作業設計報告列印稿...

測試人生 安卓FPS測試詳解

安卓的fps測試,是我開啟測試開發大門的一把鑰匙。兩年前的現在,安卓效能測試的相關資料甚少,以fps為例在網上也只有寥寥幾篇文章講述,但到了今年,已經有許多資料在各大技術論壇上供大家看到了。對於自己,一直想找乙個機會把這一段技術探索寫出來。所以,心動不如行動。fps frames per secon...