InstrumentationProtoResultParser

public class InstrumentationProtoResultParser
extends Object implements IInstrumentationResultParser

java.lang.Object
   ↳ com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser


剖析從殼層執行的檢測測試的「protoStd 輸出模式」結果,並將結果通知 ITestRunListener。

搭配「-m」選項的 Am 檢測指令會以二進位 protobuf 格式逐漸輸出測試執行狀態。輸出的 protobuf 訊息為 InstrumentationData.Session,其中包含兩個欄位:1) 重複欄位 InstrumentationData.TestStatus,2) InstrumentationData.SessionStatus。am 檢測指令會在每次執行測試前/後輸出測試狀態訊息。addOutput(byte, int, int) 會使用 data 引數叫用,該引數是 TestStatus 的序列化位元組。所有測試完成後,指令最後會輸出 SessionStatus

如需完整的 protobuf 定義,請參閱 https://cs.android.com/android/platform/superproject/+/master:frameworks/base/cmds/am/proto/instrumentation_data.proto。

InstrumentationProtoResultParser 是狀態機器,狀態是在 ERROR(InstrumentationProtoResultParserState/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState InstrumentationProtoResultParserState) 中定義。狀態開頭為 ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#NOT_STARTED)。當它看到第一個測試案例狀態時,就會移至 ERROR(InstrumentationProtoResultParserState.RUNNING/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#RUNNING InstrumentationProtoResultParserState.RUNNING)。如果所有測試都完成,狀態會變更為 ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#FINISHED);如果是透過呼叫 cancel() 要求,則會變更為 ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#CANCELLED)

每當有新的測試狀態時,系統就會通知已註冊的監聽者。

摘要

公用建構函式

InstrumentationProtoResultParser(String runName, listeners)

建構 InstrumentationProtoResultParser

公用方法

void addOutput(byte[] data, int offset, int length)

每當有新資料可用時,系統就會呼叫此方法。

void cancel()
void flush()
void handleTestRunFailed(String errorMsg)
boolean isCancelled()

公用建構函式

InstrumentationProtoResultParser

public InstrumentationProtoResultParser (String runName, 
                 listeners)

建構 InstrumentationProtoResultParser

參數
runName String:要提供給 ITestRunListener.testRunStarted 的測試執行名稱

listeners :在執行測試時通知測試結果

公用方法

addOutput

public void addOutput (byte[] data, 
                int offset, 
                int length)

每次有新資料時,系統都會呼叫此方法。

參數
data byteInstrumentationData.Session 訊息的序列化資料。如果 data 是未完成的區塊,則會新增至內部緩衝區,並在下一次 addOutput(byte, int, int) 呼叫中處理。

offset int:儲存在 data 的新資料的偏移量

length int:要處理的 data 中新資料的位元組。

cancel

public void cancel ()

排空

public void flush ()

handleTestRunFailed

public void handleTestRunFailed (String errorMsg)

參數
errorMsg String

isCancelled

public boolean isCancelled ()

傳回
boolean