簡體   English   中英

將compileOptions升級到Java8導致connectedDebugAndroidTest無法在Kitkat設備上運行

[英]Upgrading compileOptions to java8 causes connectedDebugAndroidTest to not run on Kitkat devices

當我們將android項目升級到java8時,connectedAndroidTest停止在Kitkat設備上運行Robotium測試。 但是,相同的代碼在Lollipop和更高版本的android版本上運行良好,甚至在kitkat上也可以從Android Studio執行時運行良好。 但是,一旦我們切換到./gradlew cAT它就會停止在具有以下日志的kitkat設備上執行:

如果使用AndroidJUnitRunner完成執行,則會顯示以下錯誤:

18:29:56.902 [LIFECYCLE] [org.gradle.api.Task] Starting 0 tests on Titanium Octane Plus - 4.4.2 18:29:56.903 [WARN] [org.gradle.api.Task] Tests on Titanium Octane Plus - 4.4.2 failed: Instrumentation run failed due to 'java.lang.IllegalAccessError' 18:29:56.939 [INFO] [org.gradle.api.Task] [XmlResultReporter]: XML test result file generated at /Users/sil/Workspace/Android/LrAndroid/dev-eng/Thio/android/build/outputs/androidTest-results/connected/TEST-Titanium Octane Plus - 4.4.2-android-.xml. Total tests 0, 18:29:56.939 [INFO] [com.android.build.gradle.internal.ApplicationTaskManager] [XmlResultReporter]: XML test result file generated at /Users/sil/Workspace/Android/LrAndroid/dev-eng/Thio/android/build/outputs/androidTest-results/connected/TEST-Titanium Octane Plus - 4.4.2-android-.xml. Total tests 0, 18:29:57.108 [WARN] [org.gradle.api.Task] com.android.builder.testing.ConnectedDevice > No tests found.[Titanium Octane Plus - 4.4.2] FAILED 18:29:57.109 [WARN] [org.gradle.api.Task] No tests found. This usually means that your test classes are not in the form that your test runner expects (eg don't inherit from TestCase or lack @Test annotations).

但是,如果使用了協調器,則會出現以下日志:

12:13:48.953 [LIFECYCLE] [org.gradle.api.Task] Starting 0 tests on Titanium Octane Plus - 4.4.2 12:13:48.963 [INFO] [org.gradle.api.Task] [XmlResultReporter]: XML test result file generated at /Users/sil/Workspace/Android/LrAndroid/dev-eng/Thio/android/build/outputs/androidTest-results/connected/TEST-Titanium Octane Plus - 4.4.2-android-.xml. Total tests 0, 12:13:48.963 [INFO] [org.gradle.api.Task] [XmlResultReporter]: XML test result file generated at /Users/sil/Workspace/Android/LrAndroid/dev-eng/Thio/android/build/outputs/androidTest-results/connected/TEST-Titanium Octane Plus - 4.4.2-android-.xml. Total tests 0, 12:13:48.963 [INFO] [org.gradle.api.Task] [XmlResultReporter]: XML test result file generated at /Users/sil/Workspace/Android/LrAndroid/dev-eng/Thio/android/build/outputs/androidTest-results/connected/TEST-Titanium Octane Plus - 4.4.2-android-.xml. Total tests 0, 12:13:48.963 [INFO] [org.gradle.api.Task] [XmlResultReporter]: XML test result file generated at /Users/sil/Workspace/Android/LrAndroid/dev-eng/Thio/android/build/outputs/androidTest-results/connected/TEST-Titanium Octane Plus - 4.4.2-android-.xml. Total tests 0, 12:13:48.963 [INFO] [com.android.build.gradle.internal.ApplicationTaskManager] [XmlResultReporter]: XML test result file generated at /Users/sil/Workspace/Android/LrAndroid/dev-eng/Thio/android/build/outputs/androidTest-results/connected/TEST-Titanium Octane Plus - 4.4.2-android-.xml. Total tests 0, 12:13:48.995 [WARN] [org.gradle.api.Task] com.android.builder.testing.ConnectedDevice > No tests found.[Titanium Octane Plus - 4.4.2] FAILED 12:13:48.995 [WARN] [org.gradle.api.Task] No tests found. This usually means that your test classes are not in the form that your test runner expects (eg don't inherit from TestCase or lack @Test annotations).

在build.gradle中進行的更改以使用java8:

compileOptions { targetCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8 }

期待解決方案/解釋說明為什么問題僅在Kitkat和更低版本的設備上發生(盡管我對android版本低於kitkat的設備沒有太多的困擾)。

問題是由於未在build.gradle中定義用於測試代碼的Java源目錄。 所以以前的代碼就像

instrumentTest.setRoot('tests')

要么

androidTest.setRoot('tests')

當更新到下面時,解決了該問題。

androidTest {
        setRoot('tests')
        java.srcDirs = ['src/androidTest/java']
        manifest.srcFile file('src/androidTest/AndroidManifest.xml')
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM