1

我對如何從命令行(gradle任務)單獨運行Espresso測試感興趣(運行組/套件測試,然後關閉應用程序,然後運行另一組測試套件)。Android Espresso Test Suites

發現實現JUnit Test Suites是可行的,但並不真正瞭解它在儀表測試環境下的外觀如何。它是否爲每個測試套件啓動單獨的進程?有sample application on Github但是如何從終端執行它?

另一個有趣的發現是Sharding tests。但是,它只有一句話文件。

可能有人可以分享任何單獨運行Espresso測試的經驗。

回答

1

大多數這種記錄爲AndroidJUnitRunner的一部分:https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html

即缺少的是如何通過搖籃傳遞這些參數的關鍵部分。您可以通過指定的命令行選項這樣做:

./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=*The full name of your test suite goes here* 
+0

試過這個命令,但仍然沒有任何運氣。不記得它拋出什麼樣的錯誤。無論如何,我會放棄執行單元測試套件,導致測試碎片是我需要的。不管怎麼說,還是要謝謝你。 –

1

我會建議使用的Spoon庫運行測試單獨或在多個設備並行。您可以使用jar文件或使用同一頁面上提到的Spoon gradle plugin。他們都有足夠的文件來幫助你設置它。

您也可以使用勺子運行單獨的測試和命令會是這個樣子:

./gradlew yourSpoonTaskName -PspoonClassName=com.yourPackageName.blah.ClassName 
    -PspoonMethodName=methodName 

爲了知道什麼yourSpoonTaskName運行./gradlew tasks

而且,在你的build.gradle文件中添加以下勺子配置:

spoon { 
    // for debug output 
    debug = true 

    // To grant permissions to Android M >= devices 
    grantAllPermissions = true 

    // for sharding 
    /* 
    this will execute tests in parallel on multiple devices. 
    */ 
    shard = true 

    // Add this to run a specific test class & method 
    if (project.hasProperty('spoonClassName')) { 
     className = project.spoonClassName 
    } 

    if (project.hasProperty('spoonMethodName')) { 
     methodName = project.spoonMethodName 
    }  
} 

如果你不感興趣,勺子,只是想要一個簡單的解決方案,然後用下面的命令來運行單獨的測試:

am instrument -w -r -e class com.packageName.blah.TestName#methodName com.packageName.blah.YourIntrumentationRunnerName 

如果您右鍵單擊AndroidStudio中的測試名稱並運行它,則可以輕鬆確定這些值。在控制檯中,當測試運行時,您會看到正在打印的整個命令。

+0

已經嘗試勺子。然而,令人驚訝的是它並沒有解決我的問題。我正在處理的問題是由於着名的'OutMemoryError',espresso測試崩潰。內存泄露在一個依賴性很大的第三方庫上,並且不能被替換。我認爲在多個模擬器上運行測試將暫時解決我的問題,同時我會找到適當的解決方案。 –

+0

如果您之前提及您的OutMemoryError 問題會更好,因爲您的初始聲明中沒有提及此問題。你想知道的是如何做我告訴過你的測試分片。如果您繼續詳細解釋,我將非常樂意回答您的實際問題。一些日誌也會有幫助。 –

相關問題