Android Studio找不到TestCase类

joa*_*tes 11 android automated-tests android-studio

我编写了一个简单的测试用例类,并将其放在Android Studio的默认测试目录中:"src/androidTest".我创建了一个Android Tests构建配置,用于查找模块中的所有测试.当我运行构建配置时,我的测试没有执行,我在logcat中收到以下消息:W/TestGrouping? Invalid Package: '' could not be found or has no tests.如果我指定测试包甚至特定的测试类,我会得到类似的类未找到的消息.

我的测试类如下:

public class FirstTest extends InstrumentationTestCase {

public void testSample() {
        final int expected = 1;
        final int reality = 5;
        assertEquals(expected, reality);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的build.gradle文件如下所示:

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:gridlayout-v7:19.0.1'
    compile 'com.android.support:support-v4:19.0.1'
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud)

我正在运行android gradle插件的0.9版本.我的顶级build.gradle(app目录的对等点)看起来像这样.

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

我的项目目录结构如下:

app src androidTest java main java res

joa*_*tes 11

androidTest/java目录下的包结构需要与main/java目录下的结构完全并行.

我上面的问题是main下的包结构com.mydomain.myapp.subpackage和androidTest下的目录结构是com.mydomain.myapp.subpackage.somethingelse.

一旦包结构匹配,就可以完美地发现和执行测试.


Мак*_*люк 8

您需要检查“运行”配置。

如果要从androidTest文件夹运行测试,则应在Android Instrumented Test下选择配置,而不是junit。

运行(顶部工具窗口)/编辑配置...

在此处输入图片说明


Gan*_*nus 7

您无需真正重建src目录的结构即可创建适当的测试。

被测试者和测试类应该在同一包中。

但是对于文件夹,它们应该分开。因此,对于测试和常规来源,我们使用不同的根。

问题是,如何设置这些根。在AS 1.5中(也许早期版本也可以做到),可以很容易地完成:

  1. 制作几乎任何目录结构。在其中的某处有被测试源的根目录。右键单击它并Mark Directory As... Sources Root
  2. 为测试建立另一个目录的任意结构。测试源的根目录在其中。右键单击它并Mark Directory As... Test Sources Root

在这些根目录下,测试类的路径必须与从其根目录到测试类的路径相同,因为沿着这些路径的目录名定义了包,并且它们应该相同。但是您不必担心根源之上的结构。

使用此方法,您可以将测试添加到任何现有的源结构中。如果您自己创建结构,则使其变得比较传统。

编辑。注意,Java 9模块的文件夹结构完全不同。


小智 6

也许我可以为某人节省时间:当我在 Android Studio 中选择“release”buildVariant 时,我遇到了同样的错误“找不到类:”,因此在运行 AndroidTests(Espresso) 之前,请仔细检查您的构建变体并尝试设置将其设置为“调试”