由于“java.io.FileNotFoundException”,检测仪运行失败

我试图让我的仪器testing在Travis CI上运行。 我在Travis上运行版本时遇到这个错误。 但是,我在本地运行testing没有任何问题。 我是Android / Java开发新手,所以我甚至不知道从哪里开始寻找。

... :MyappAndroid:packageMyappDebugAndroidTest :MyappAndroid:assembleMyappDebugAndroidTest :MyappAndroid:connectedMyappDebugAndroidTest Tests on test(AVD) - 6.0 failed: Instrumentation run failed due to 'java.io.FileNotFoundException' com.android.builder.testing.ConnectedDevice > No tests found.[test(AVD) - 6.0] FAILED 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). :MyappAndroid:connectedMyappDebugAndroidTest FAILED ... 

这是我期望运行的一个testing:

 package core.ui.dialogs; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; @RunWith(AndroidJUnit4.class) @LargeTest public class DialogActivityTest { @Rule public ActivityTestRule<DialogActivity> mActivityRule = new ActivityTestRule<>(DialogActivity.class); @Test public void testSomething() { // etc... } } 

我的.travis.yml

 language: android jdk: oraclejdk7 sudo: false env: global: - ANDROID_API_LEVEL=23 - BUILD_TOOLS_VERSION=23.0.3 - ANDROID_ABI=armeabi-v7a - ADB_INSTALL_TIMEOUT=8 android: components: - tools - build-tools-$BUILD_TOOLS_VERSION - android-$ANDROID_API_LEVEL - add-on - extra before_script: - echo no | android create avd --force -n test -t android-$ANDROID_API_LEVEL --abi $ANDROID_ABI - emulator -avd test -no-skin -no-audio -no-window & - android-wait-for-emulator - adb shell input keyevent 82 & script: ./gradlew assembleMyappDebug connectedMyappDebugAndroidTest -PdisablePreDex 

更新:这里是一些可能在我的build.gradle相关的build.gradle

 android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 19 targetSdkVersion 23 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } } // ... dependencies { compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:support-v4:23.1.0' compile 'com.google.android.gms:play-services-gcm:8.4.0' compile 'com.google.code.gson:gson:2.3' compile 'com.squareup.dagger:dagger:1.2.2' provided 'com.squareup.dagger:dagger-compiler:1.2.2' // ... androidTestCompile 'com.squareup:javawriter:2.5.0' androidTestCompile ('com.android.support.test.espresso:espresso-core:2.0') { exclude group: 'javax.inject' } androidTestCompile 'com.android.support.test:testing-support-lib:0.1' } 

Solutions Collecting From Web of "由于“java.io.FileNotFoundException”,检测仪运行失败"

有两个问题:

问题1:

com.android.builder.testing.ConnectedDevice>未findtesting。[test(AVD) – 6.0] FAILED

这已经在你的案例中描述了。 这通常意味着你的testing类不是你testing运行者期望的forms(例如,不从TestCaseinheritance或缺less@Test注解)。

为此,您可以运行

 gradlew :MyappAndroid:connectedMyappDebugAndroidTest 

(其中MyappAndroidMyappAndroid模块的目录名),它将只运行你的MyappAndroid的testing。

资源链接:

https://stackoverflow.com/a/29717892/2293534

问题2:

这个问题发生在像匕首这样的一些依赖项上。

正如artem-zinnatullin在post中所述

问题是你编译dagger-compiler到项目。 我不想调查为什么它会在Android 5+的仪器testing中产生问题,但无论如何,只要不编译到apk。

//可能testing运行者在内部使用Dagger 2,并且通过编译自己的版本来破坏它,可能他们甚至使用Dagger 1,包名称是相同的。

你可以使用APT Gradle Plugin https://bitbucket.org/hvisser/android-apt在编译期间运行dagger-compiler,但是不要编译到应用程序&#x3002;

这里是#仪器testing和Dagger 2,一切正常工作没有问题的qualitymatters应用程序,所以你可以看看,看看如何烤类似的东西。

对于Gradle用户 ,请使用https://github.com/tbroyer/gradle-apt-plugin

对于Maven用户 ,使用<optional>true</optional>

匕首文档的细节在这里:安装,gradle的细节

资源链接:

https://stackoverflow.com/a/34332482/2293534

我也是新来的机器人,但我会尽力帮助你。

你可以按照这个答案:

https://groups.google.com/d/msg/adt-dev/QW5SuzQizNk/mWdaEuuCCQAJ

链接到:

https://github.com/google/dagger/issues/271

基本上这可能是这个问题:

您可能会错误地使用compile 'com.google.dagger:dagger-compiler:2.0.2'

正确'com.google.dagger:dagger-compiler:2.0.2'

并检查这个链接相同的问题

https://googleweblight.com/?lite_url=https://github.com/Shippable/support/issues/1453&ei=a6rzQlWF&lc=en-IN&s=1&m=140&host=www.google.co.in&ts=1471246688&sig=AKOVD67-05kCThujPFkmuySpywKlKpVG -G