Robolectric - AndroidStudio - 找不到参数的方法testCompile()

时间:2015-04-14 21:58:49

标签: java android unit-testing junit robolectric

我正在尝试在AndroidStudio中使用Robolectric和AssertJ进行一些基本的单元测试。我已经使用build.gradle方法将Robolectric,AssertJ和JUnit添加到我的testCompile文件中。但是,当我尝试实际运行单元测试时,我继续收到错误说"无法找到方法testCompile()"。

我已尝试将testCompile方法替换为提及hereandroidTestCompile,但是后来找不到任何Robolectric,AssertJ和JUnit类都可以导入{{1} } .class。

我还创建了一个非常基本的示例应用程序,看看我是否可以让Robolectric工作。使用那个令我困惑的应用程序,一切都运行正常,可以找到该项目here

非常感谢一些帮助,谢谢。

这是日志输出:

SampleTest.java

这是我的测试类:

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'.

这是a-fp-core build.gradle文件:

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();
    }

}

文件夹结构:

Folder Structure}

我在Android Studio中的测试:

Unit Test

1 个答案:

答案 0 :(得分:3)

SourceSets:

我可以告诉您,这些内容来自基于您的sourceSets 基于Eclipse的项目:

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测试:

确保已开启“单元测试”。

Unit testing in Android Studio

这允许您在IDE中运行单元测试。请按照官方Android文档中的说明进行操作:

来源:http://tools.android.com/tech-docs/unit-testing-support

从命令行运行Unit测试:

gradlew test