InstrumentationProtoResultParser
public
class
InstrumentationProtoResultParser
extends Object
implements
IInstrumentationResultParser
| java.lang.Object | |
| ↳ | com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser |
從殼層剖析檢測測試執行的「protoStd 輸出模式」結果,並將結果通知 ITestRunListener。
使用「-m」選項的 Am instrumentation 指令會以二進位 protobuf 格式,逐步輸出測試執行狀態。輸出 protobuf 訊息為 InstrumentationData.Session,其中包含兩個欄位:1) InstrumentationData.TestStatus 的重複欄位,2) InstrumentationData.SessionStatus。am instrument 指令會在每次執行測試前後輸出測試狀態訊息。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,
|
|
公用方法 | |
|---|---|
void
|
addOutput(byte[] data, int offset, int length)
每當有新資料可用時,系統就會呼叫這個方法。 |
void
|
cancel()
要求取消測試執行。 |
void
|
flush()
在程序執行結束時呼叫 (除非程序已取消)。 |
void
|
handleTestRunFailed(String errorMsg)
當「am instrument」指令因例外狀況而當機時,系統會呼叫這個方法。 |
boolean
|
isCancelled()
Cancel 方法可停止執行遠端 shell 命令。 |
公用建構函式
InstrumentationProtoResultParser
public InstrumentationProtoResultParser (String runName,
listeners) 建構 InstrumentationProtoResultParser。
| 參數 | |
|---|---|
runName |
String:要提供給 ITestRunListener.testRunStarted 的測試執行名稱 |
listeners |
:在測試執行期間收到測試結果通知 |
公用方法
addOutput
public void addOutput (byte[] data,
int offset,
int length)每當有新資料可用時,系統就會呼叫這個方法。
| 參數 | |
|---|---|
data |
byte:InstrumentationData.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)
當「am instrument」指令因例外狀況而當機時,系統會呼叫這個方法。如果測試執行期間發生當機情形,系統應通知所有已註冊的監聽器,ITestRunListener.testRunFailed 後接 ITestRunListener.testRunEnded(long, 。
| 參數 | |
|---|---|
errorMsg |
String |
isCancelled
public boolean isCancelled ()
取消方法,停止執行遠端 Shell 指令。
| 傳回 | |
|---|---|
boolean |
true 可取消執行指令。 |