我目前正在开发一款Android应用程序,最近从Eclipse转换到了Android Studio(不是我的想法;)。然而,我想配置一个Jenkins服务器来定期运行JUnit测试和其他测试。为了实现这个目的,我尝试配置一个gradle buildfile。以下是我的设置:
目录结构:
-app
-src
-main
-test
build.gradle文件:(位于“src/build.gradle”)
apply plugin: 'android'
sourceSets {
unitTest {
java.srcDir file('src/test/java/[appName]/app')
}
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets {
instrumentTest.setRoot('src/test')
}
}
task unitTest(type:Test) {
testClassesDir = sourceSets.unitTest.output.classesDir
classpath = sourceSets.unitTest.runtimeClasspath
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v13:+'
compile 'com.android.support:appcompat-v7:+'
compile 'com.android.support:support-v4:+'
unitTest 'junit:junit:4.10'
}
测试类 MainActivityTest.java
package [appName].app;
import android.test.InstrumentationTestCase;
import junit.framework.Assert;
public class MainActivityTest extends InstrumentationTestCase{
public void testMain(){
Assert.assertEquals(1,2);
}
}
还有最重要的一部分,错误信息:
Error:(41, 0) Build script error, unsupported Gradle DSL method found: 'unitTest()'!
这是我第一次使用gradle和Android Studio,我真的不知道我做错了什么。在互联网上,我只找到了遇到类似问题的人,但没有一个解决方案适用于我。如果您能指点我正确的方向,我会非常高兴!
敬礼
build.gradle
应该放在app
中,而不是app/src
中。否则,构建输出将会进入app/src/build
(这没有多大意义),并且java.srcDir
路径必须被修复(相对路径始终相对于构建脚本)。此外,java.srcDir
路径不能包含包名(即它必须是src/test/java
)。代替dependencies { unitTest ...
,应该是dependencies { unitTestCompile ...
。我不确定是否仅通过应用 "android" 插件就可以获得非 Android 源集。您可能还需要额外应用 "java-base" 或 "java"。 - Peter Niederwiesertest
源集(和testCompile
配置),而不是声明自己的。 - Peter Niederwieser