【发布时间】:2016-09-02 04:00:30
【问题描述】:
我们的项目使用了 Cordova,它通过以下方式自定义了 build.gradle 文件:
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
我阅读了有关设置仪器测试的文档并按照指示配置了我的 gradle 文件:
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile project(':CordovaLib')
// other deps
// !! THIS IS THE INSTRUMENT SETUP!
// Required -- JUnit 4 framework
androidTestCompile 'junit:junit:4.12'
// Optional -- Mockito framework
androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'com.android.support:support-annotations:23.3.0'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'
// Optional -- Hamcrest library
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
// Optional -- UI testing with Espresso
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
// Optional -- UI testing with UI Automator
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
}
我已经同步了 gradle,并且外部 libs 文件夹确实包含所有 junit、hamcrest 和 mockito 文件。进一步证明当我将它们导入我的测试类时它具有自动完成功能(在src\androidTest\java 中正确设置:
package co.appname.app.Utils;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.CoreMatchers.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import static org.junit.Assert.*;
public class ColorsTest
{
@Test
public void test()
{
assertThat(2, is(2));
}
}
但是当我去编译或运行测试时,我得到了
Error:(5, 17) 错误:包 org.junit 不存在
Error:(6, 24) 错误:包 org.junit.runner 不存在
Error:(7, 27) 错误:包 org.mockito.runners 不存在
错误:(9, 24) 错误:包 org.hamcrest 不存在
我建立了一个新项目(并且没有修改源集)并且我的 Instrumentation 测试运行良好。
我认为我的源集一定有问题。所以我阅读了setting up a gradle file 上的文档,特别是测试部分。
我唯一能找到相关的是这一段:
如前所述,在主 sourceSet 旁边是 androidTest sourceSet,默认位于 src/androidTest/。使用此 sourceSet 构建测试 APK,可以将其部署到设备以使用 Android 测试框架测试应用程序。这可以包含 android 单元测试、仪器测试和 uiautomator 测试。测试应用的清单节点已生成,但您可以创建 src/androidTest/AndroidManifest.xml 文件以将其他组件添加到测试清单中。
但是,我尝试在我的 gradle 文件中这样设置:
androidTest.setRoot('src/androidTests/java') 没用
androidTest.setRoot('tests') 没用
androidTest.setRoot('androidTests') 没用
我的项目似乎找不到 junit 文件,我怀疑它与我的源集被移动有关 某些(因为正如我所说,我的测试项目确实运行了仪器测试)但我有不知道该怎么做才能修复它。如果您有任何建议(甚至是关于我可以在哪里寻找的神秘想法),我将不胜感激!
【问题讨论】:
标签: android cordova unit-testing gradle junit