Robolectric - AndroidStudio - 找不到参数的方法 testCompile()
Robolectric - AndroidStudio - Could not find method testCompile() for arguments
我正在尝试 运行 在 AndroidStudio 中使用 Robolectric 和 AssertJ 进行一些基本单元测试。我已使用 testCompile
方法将 Robolectric、AssertJ 和 JUnit 添加到我的 build.gradle
文件中。但是,当我尝试实际 运行 单元测试时,我继续收到一条错误消息 "Could not find method testCompile()".
我曾尝试用 androidTestCompile
替换 testCompile
方法,如 here 所述,但 none Robolectric、AssertJ 和 JUnit classes可以在我的SampleTest.java
class中找到导入。
我还创建了一个非常基本的示例应用程序,看看我是否可以 Robolectric 工作。该应用程序一切正常,这让我感到困惑,可以找到该项目 here.
非常感谢一些帮助,谢谢。
这是日志输出:
Testing started at 4:45 PM ...
4:45:18 PM: Executing external tasks 'cleanTest test --tests com.master.SampleTest'...
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/dthacker/Code/Repos/Default/CoreV2/a-fp-core/build.gradle' line: 45
* What went wrong:
A problem occurred evaluating project ':a-fp-core'.
> Could not find method testCompile() for arguments [org.robolectric:robolectric:3.0-rc2] on project ':a-fp-core'.
* 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: 2.163 secs
Could not find method testCompile() for arguments [org.robolectric:robolectric:3.0-rc2] on project ':a-fp-core'.
这是我的测试class:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class SampleTest {
@Test
public void sampleTest() throws Exception {
String testString = "hey";
assertThat(testString).isNotNull();
}
}
这是 a-fp-core build.gradle 文件:
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath "org._10ne.gradle:rest-gradle-plugin:0.3.2"
}
}
apply plugin: 'com.android.library'
apply plugin: "org.10ne.rest"
repositories {
mavenCentral()
maven { url 'http://download.crashlytics.com/maven' }
maven { url 'http://lorenzo.villani.me/android-cropimage/' }
}
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile project(':a-fa-core-data')
compile 'com.google.code.gson:gson:2.3'
compile 'com.mcxiaoke.volley:library:1.0.15'
testCompile "org.robolectric:robolectric:3.0-rc2"
testCompile "junit:junit:4.12"
testCompile "org.assertj:assertj-core:1.7.0"
}
android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
文件夹结构:
}
我在 Android Studio 中的测试:
源集:
我可以告诉您来自一个基于 Eclipse 的 项目,该项目基于您的 sourceSets
:
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/java']
aidl.srcDirs = ['src/main/java']
renderscript.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
}
}
我建议删除您的 sourceSets
并使用 Android Studio/Intellij 项目结构:src/main, src/test
.
运行 Unit
测试来自 IDE
:
确保您已打开“单元测试”。
这允许您 运行 在 IDE 中进行单元测试。请按照官方 Android 文档中的说明进行操作:
来源:http://tools.android.com/tech-docs/unit-testing-support
运行 Unit
从命令行测试:
gradlew test
我正在尝试 运行 在 AndroidStudio 中使用 Robolectric 和 AssertJ 进行一些基本单元测试。我已使用 testCompile
方法将 Robolectric、AssertJ 和 JUnit 添加到我的 build.gradle
文件中。但是,当我尝试实际 运行 单元测试时,我继续收到一条错误消息 "Could not find method testCompile()".
我曾尝试用 androidTestCompile
替换 testCompile
方法,如 here 所述,但 none Robolectric、AssertJ 和 JUnit classes可以在我的SampleTest.java
class中找到导入。
我还创建了一个非常基本的示例应用程序,看看我是否可以 Robolectric 工作。该应用程序一切正常,这让我感到困惑,可以找到该项目 here.
非常感谢一些帮助,谢谢。
这是日志输出:
Testing started at 4:45 PM ...
4:45:18 PM: Executing external tasks 'cleanTest test --tests com.master.SampleTest'...
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/dthacker/Code/Repos/Default/CoreV2/a-fp-core/build.gradle' line: 45
* What went wrong:
A problem occurred evaluating project ':a-fp-core'.
> Could not find method testCompile() for arguments [org.robolectric:robolectric:3.0-rc2] on project ':a-fp-core'.
* 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: 2.163 secs
Could not find method testCompile() for arguments [org.robolectric:robolectric:3.0-rc2] on project ':a-fp-core'.
这是我的测试class:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class SampleTest {
@Test
public void sampleTest() throws Exception {
String testString = "hey";
assertThat(testString).isNotNull();
}
}
这是 a-fp-core build.gradle 文件:
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath "org._10ne.gradle:rest-gradle-plugin:0.3.2"
}
}
apply plugin: 'com.android.library'
apply plugin: "org.10ne.rest"
repositories {
mavenCentral()
maven { url 'http://download.crashlytics.com/maven' }
maven { url 'http://lorenzo.villani.me/android-cropimage/' }
}
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile project(':a-fa-core-data')
compile 'com.google.code.gson:gson:2.3'
compile 'com.mcxiaoke.volley:library:1.0.15'
testCompile "org.robolectric:robolectric:3.0-rc2"
testCompile "junit:junit:4.12"
testCompile "org.assertj:assertj-core:1.7.0"
}
android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
文件夹结构:
我在 Android Studio 中的测试:
源集:
我可以告诉您来自一个基于 Eclipse 的 项目,该项目基于您的 sourceSets
:
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/java']
aidl.srcDirs = ['src/main/java']
renderscript.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
}
}
我建议删除您的 sourceSets
并使用 Android Studio/Intellij 项目结构:src/main, src/test
.
运行 Unit
测试来自 IDE
:
确保您已打开“单元测试”。
这允许您 运行 在 IDE 中进行单元测试。请按照官方 Android 文档中的说明进行操作:
来源:http://tools.android.com/tech-docs/unit-testing-support
运行 Unit
从命令行测试:
gradlew test