Android Studio找不到TestCase类

时间:2014-03-07 04:22:22

标签: android-studio automated-tests

我编写了一个简单的测试用例类,并将其放在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);
    }
}

我的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'])
}

我正在运行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()
    }
}

我的项目目录结构如下:

app src androidTest java main java res

7 个答案:

答案 0 :(得分:6)

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

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

一旦包结构匹配,测试就会被发现并完美无缺地执行。

答案 1 :(得分:5)

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

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

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

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

  1. 使 几乎任何 目录结构。在其中的某个地方有测试源的根目录。右键单击它并 Mark Directory As ... Sources Root
  2. 为测试创建另一个任意目录结构。其中的某个地方有测试源的根目录。右键单击它并 Mark Directory As ... Test Sources Root
  3. 在这些根目录下,测试类的路径必须与从其根目录到测试类的路径相同,因为沿这些路径的目录名称定义了包,它们应该 相同 即可。但你不必担心根源之上的结构。

    使用此方法,您可以将测试添加到任何现有的源结构中。如果您自己创建结构,请将其设置为传统结构。

    修改即可。请注意,Java 9模块的文件夹结构绝对不同。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

请发布您的整个build.gradle文件 您使用的是什么版本的'com.android.tools.build:gradle'? 在0.8中,默认测试路径是“instrumentTest / java / ...” 在0.9中,默认测试路径更改为“androidTest / java / ...”。

要使用androidTest,您应该:

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

答案 4 :(得分:0)

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

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

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

enter image description here

答案 5 :(得分:0)

除了我的笔记之前写的所有内容(因此,请在我的建议之前检查那些内容),有时我还解决了将测试文件移至定制目录之外的问题(例如,我创建了db_test或/ test或androidTest下的类似内容)到test或androidTest的根目录,将其拖放到AndroidStudio资源管理器的dir外部,然后等待重构android studio对话框进行确认。

成功运行后,我再次将其放在原始目录中,再次运行即可。

在另一种情况下,我解决了重命名自定义目录的问题。

在另一种方法中,因为测试在根目录中,所以我创建了自定义目录,将其移入其中,然后成功运行。

这些对我有用,希望可以为其他人节省时间。

答案 6 :(得分:0)

这个问题真是疯狂。不要想太多。

我如何修复(Win10):

  1. 重新启动(可能没有必要)
  2. 尝试运行测试
  3. 尝试进行覆盖

它已在Android Studio 3.6.3上为我修复了

这两种运行测试的方法是不同的,这种方法也可以为您解决问题。