没有错误Android Studio说“没有找到测试”

时间:2016-02-16 08:07:39

标签: java android testing android-studio android-instrumentation

我正在尝试为MainActivity编写一个检测测试。我按照here给出了答案。 Android Studio仍无法找到任何测试。我在androidTest文件夹中有ApplicationTest.java类。这是班级的内容:

package com.example.monicamarcus.mymusicplayer

import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;
import com.example.monicamarcus.mymusicplayer.MainActivity;

public class ApplicationTest extends ActivityInstrumentationTestCase2<MainActivity> { 
    public ApplicationTest() {
        super(MainActivity.class);
    }

    public void testNextTrackButton() throws Exception {
        Activity activity = getActivity();

        Button nextButton = (Button) activity.findViewById(R.id.nextTrackBt);
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                nextButton.performClick();
                assertTrue(currentPosition < songList.size());
            }});
        activity.finish();
    }
}

这个测试类有什么问题?还是测试?我没有得到任何错误,它只是没有找到任何测试运行。运行ApplicationTest后,输出以以下行结束:

Running tests
Test running startedFinish
Empty test suite.

以下是该应用的build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.monicamarcus.mymusicplayer"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testApplicationId "app.src.androidTest.java.com.example.monicamarcus.mymusicplayer"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }
    buildTypes {
        debug {
            minifyEnabled false
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

android {
    useLibrary 'org.apache.http.legacy'
}

android {

    sourceSets {

        androidTest {
            java.srcDirs = ['androidTest/java']
        }

    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    androidTestCompile 'junit:junit:4.12'
}

以下是测试运行的输出:

Testing started at 1:56 PM ...
Target device: gt_i8190n-4790068ee9a750c6
Installing APK: /Users/monicamarcus/AndroidStudioProjects/MyMusicPlayer/app/build/outputs/apk/app-debug.apk
Uploading file to: /data/local/tmp/com.example.monicamarcus.mymusicplayer
Installing com.example.monicamarcus.mymusicplayer
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.monicamarcus.mymusicplayer"
pkg: /data/local/tmp/com.example.monicamarcus.mymusicplayer
Success


Installing APK: /Users/monicamarcus/AndroidStudioProjects/MyMusicPlayer/app/build/outputs/apk/app-debug-androidTest-unaligned.apk
Uploading file to: /data/local/tmp/app.src.androidTest.java.com.example.monicamarcus.mymusicplayer
Installing app.src.androidTest.java.com.example.monicamarcus.mymusicplayer
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/app.src.androidTest.java.com.example.monicamarcus.mymusicplayer"
pkg: /data/local/tmp/app.src.androidTest.java.com.example.monicamarcus.mymusicplayer
Success


Running tests
Test running startedFinish
Empty test suite.

在我做了一些更改后(如果有人感兴趣我可以发布它们),运行检测测试类的结果如下:“运行测试。测试运行开始。测试运行失败:没有测试结果。空测试套件。 “没有人有这种测试的经验吗?

3 个答案:

答案 0 :(得分:2)

build.gradle中,testApplicationId看起来很奇怪。我会将其删除testInstrumentationRunner。默认值应该没问题。具体来说,如果您未指定testApplicationId,则会通过将".test"附加到applicationId来创建。{/ p>

答案 1 :(得分:0)

不确定是否已找到问题。遇到类似但只有在添加了assertTrue()时才得到"Empty test suite."

但是用assertNotNull()替换测试很好,但仍然不能使用assertTrue(不知道为什么)。

(我正在使用kotlin并在AndroidTest文件夹中修改Android studio生成的默认测试,并且测试在kotlin的伴随对象中编码,如果这有任何区别的话)。 更新:在随播对象外使用assertTrue()就可以了。

答案 2 :(得分:-1)

我刚在android studio 2.2.2中创建了一个新项目,做了一个android测试失败做了一个gradle cC,得到了下面的输出。

您可以在输出底部的每个设备上看到测试失败。

question可能相关。

报告在So35426990 / app / build / reports / androidTests / connected / index.html

d:\ AndroidStudioProjects \ So35426990&gt; gradle cC

Incremental java compilation is an incubating feature.
The TaskInputs.source(Object) method has been deprecated and is scheduled to be
removed in Gradle 4.0. Please use TaskInputs.file(Object).skipWhenEmpty() instea
d.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2421Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72421Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2421Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUi2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUtils2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportFragment2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportMediaCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportVectorDrawable2421Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources
:app:processDebugManifest
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:incrementalDebugJavaCompilationSafeguard UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:mergeDebugShaders UP-TO-DATE
:app:compileDebugShaders UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:transformClassesWithDexForDebug UP-TO-DATE
:app:mergeDebugJniLibFolders UP-TO-DATE
:app:transformNative_libsWithMergeJniLibsForDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
:app:validateSigningDebug
:app:packageDebug UP-TO-DATE
:app:assembleDebug UP-TO-DATE
:app:preDebugAndroidTestBuild UP-TO-DATE
:app:prepareComAndroidSupportTestEspressoEspressoCore222Library UP-TO-DATE
:app:prepareComAndroidSupportTestEspressoEspressoIdlingResource222Library UP-TO-
DATE
:app:prepareComAndroidSupportTestExposedInstrumentationApiPublish05Library UP-TO
-DATE
:app:prepareComAndroidSupportTestRules05Library UP-TO-DATE
:app:prepareComAndroidSupportTestRunner05Library UP-TO-DATE
:app:prepareDebugAndroidTestDependencies
:app:compileDebugAndroidTestAidl UP-TO-DATE
:app:processDebugAndroidTestManifest UP-TO-DATE
:app:compileDebugAndroidTestRenderscript UP-TO-DATE
:app:generateDebugAndroidTestBuildConfig UP-TO-DATE
:app:generateDebugAndroidTestResValues UP-TO-DATE
:app:generateDebugAndroidTestResources UP-TO-DATE
:app:mergeDebugAndroidTestResources
:app:processDebugAndroidTestResources UP-TO-DATE
:app:generateDebugAndroidTestSources UP-TO-DATE
:app:incrementalDebugAndroidTestJavaCompilationSafeguard UP-TO-DATE
:app:compileDebugAndroidTestJavaWithJavac
:app:compileDebugAndroidTestNdk UP-TO-DATE
:app:compileDebugAndroidTestSources
:app:mergeDebugAndroidTestShaders UP-TO-DATE
:app:compileDebugAndroidTestShaders UP-TO-DATE
:app:generateDebugAndroidTestAssets UP-TO-DATE
:app:mergeDebugAndroidTestAssets UP-TO-DATE
:app:transformClassesWithDexForDebugAndroidTest
:app:mergeDebugAndroidTestJniLibFolders UP-TO-DATE
:app:transformNative_libsWithMergeJniLibsForDebugAndroidTest UP-TO-DATE
:app:processDebugAndroidTestJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForDebugAndroidTest UP-TO-DATE
:app:validateSigningDebugAndroidTest
:app:packageDebugAndroidTest
:app:assembleDebugAndroidTest
:app:connectedDebugAndroidTest

acme.so35426990.ExampleInstrumentedTest > useAppContext[KFFOWI - 5.1] FAILED
        java.lang.AssertionError: failing
        at org.junit.Assert.fail(Assert.java:88)

acme.so35426990.ExampleInstrumentedTest > useAppContext[KFFOWI - 5.1.1] FAILED
        java.lang.AssertionError: failing
        at org.junit.Assert.fail(Assert.java:88)

acme.so35426990.ExampleInstrumentedTest > useAppContext[Nexus 7 - 5.1.1] FAILED

        java.lang.AssertionError: failing
        at org.junit.Assert.fail(Assert.java:88)
                                                   :app:connectedDebugAndroidTes
t FAILEDng 96% > :app:connectedDebugAndroidTest

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:connectedDebugAndroidTest'.
> There were failing tests. See the report at: file:///D:/AndroidStudioProjects/
So35426990/app/build/reports/androidTests/connected/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 35.227 secs

d:\AndroidStudioProjects\So35426990>