如何在Android Studio中创建测试结构?

时间:2014-02-16 03:07:28

标签: android testing junit android-studio

我有一个最近迁移到Android Studio(和gradle)的项目。我现在想为它创建一套测试。不幸的是,我不确定如何在Android Studio中执行此操作(在Eclipse ADT中它非常简单)。

我有以下文件结构: project structure

我的build.gradle看起来像:

apply plugin: 'android'

repositories {
    maven { url 'libs'}
}

sourceSets {
    testLocal {
        java.srcDir file('src/test/java')
        resources.srcDir file('src/test/resources')
    }
}

dependencies {
    compile 'com.larswerkman.holocolorpicker:holocolorpicker:1.1'
    compile fileTree(dir: 'libs', include: '*.jar')
    testLocalCompile 'junit:junit:4.8.2'
    testLocalCompile 'com.google.android:android:4.0.1.2'
    testLocalCompile 'com.google.android:support-v4:r6'
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"
    defaultConfig {
        testPackageName "com.glasstowerstudios.stainedglass.test"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }
}

task localTest(type: Test, dependsOn: assemble) {
    testClassesDir = sourceSets.testLocal.output.classesDir

    android.sourceSets.main.java.srcDirs.each { dir ->
        def buildDir = dir.getAbsolutePath().split('/')
        buildDir =  (buildDir[0..(buildDir.length - 4)] + ['build', 'classes', 'debug']).join('/')

        sourceSets.testLocal.compileClasspath += files(buildDir)
        sourceSets.testLocal.runtimeClasspath += files(buildDir)
    }

    classpath = sourceSets.testLocal.runtimeClasspath
}

check.dependsOn localTest

我创建的测试称为AllTests.java,它现在只有一个断言(我只是想在实现实际测试逻辑之前设置测试框架:

import junit.framework.Assert;
import junit.framework.TestCase;

package com.glasstowerstudios.stainedglass.test;

public class AllTests extends TestCase {
  public void setUp() {

  }

  public void tearDown() {

  }

  public void testStartup() {
    Assert.assertEquals(true, true);
  }
}

当我运行构建它成功时,即使我从命令行执行gradle localTest。但是,在Android Studio内部,当我右键单击AllTests.java并选择Run AllTests时,我收到以下错误:

Error running 'AllTests':
Class 'AllTests' not found in module 'stainedglass'

我认为这与我创建测试的方式有关(在测试内部一次创建一个目录/然后通过New创建文件 - > File。所以,我想也许它只是简单地没有添加到模块中,就像src/main/java目录一样(你可以在图中看到这一点 - src/main/java是蓝色的,而{ {1}}仍为橙色。

在Android Studio中为现有代码创建测试结构的“正确”方法是什么?

0 个答案:

没有答案