android evaluater_android – 带有test.R.java的Robolectric
我在API21上有一个使用robolectric 3.0的库项目,com.android.tools.build:grad:1.3.1.
我想在robolectric测试中使用测试资源(好像在src / androidTest / res / …下),即com.mypackage.test.R.java(而不是用于生产的com.mypackage.R.java).
到目前为止我所拥有的:
目录结构是
src/
main/
java
res
test/
java
// no res here because it's not picked up
androidTest/
res // picked up by androidTest build variant to generate test.R.java
然后在build.gradle中:
android {
compileSdkVersion 21
buildToolsVersion = "22.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 21
}
sourceSets {
test {
java {
srcDir getTestRJavaDir()
}
}
}
}
def private String getTestRJavaDir(){
def myManifestRoot = (new XmlParser()).parse("${project.projectDir}/src/main/AndroidManifest.xml")
def myPackageNamespace = myManifestRoot.@package
def myPackagePath = myPackageNamespace.replaceAll("\\.", "/")
return "${project.buildDir}/generated/source/r/androidTest/debug/${myPackagePath}/test"
}
afterEvaluate { project ->
[tasks.compileDebugUnitTestSources, tasks.compileReleaseUnitTestSources]*.dependsOn("compileDebugAndroidTestSources")
}
我的测试现在使用test.R.java成功编译.
但是,在运行时,它们会失败,因为robolectric现在无法找到我的资产文件,因为它们现在位于${project.buildDir} / intermediates / assets / androidTest / debug中,而之前它们位于${project.buildDir} / intermediateiates /资产/调试.我怀疑机器人也无法找到资源文件,因为它们也被移动到androidTest(build variant?)目录下.
所以有两个问题:1)有更好的方法吗? 2)如果没有,我怎么能告诉robolectric在哪里寻找资产文件?
我试过@Config(assetDir =“build / intermediates / assets / androidTest / debug”)和@Config(assetDir =“../ build / intermediates / assets / androidTest / debug”)无济于事.
解决方法:
您可以创建一个自定义的roboletric测试运行器,如:
public class CustomRobolectricGradleTestRunner extends RobolectricGradleTestRunner {
public CustomRobolectricGradleTestRunner(Class> klass) throws InitializationError {
super(klass);
}
// Fix for the NotFound error with openRawResource()
@Override
protected AndroidManifest getAppManifest(Config config) {
String manifest = "src/main/AndroidManifest.xml";
String res = String.format("../app/build/intermediates/res/merged/%1$s/%2$s", BuildConfig.FLAVOR, BuildConfig.BUILD_TYPE);
String asset = "src/test/assets";
return new AndroidManifest(Fs.fileFromPath(manifest), Fs.fileFromPath(res), Fs.fileFromPath(asset));
}
}
在变量资产中,您可以定义类似“../build/intermediates/assets/androidTest/debug”的内容
android evaluater_android – 带有test.R.java的Robolectric相关推荐
- Android项目clean之后R.java文件丢失解决办法
2019独角兽企业重金招聘Python工程师标准>>> Android项目clean之后R.java文件丢失解决办法 1. Android Tools -> fix proj ...
- Android Studio中打开R.java文件的方法
1 R.java文件简介 Android Studio中的R.java文件自动收录当前应用中所有的资源,并根据这些资源建立响应的ID,可以把R.java当成Android应用的资源字典.R.java文 ...
- android开发中出现R.java was modified manually! Reverting to generated version!问题的解决方法...
这种问题是说R.java文件没有起作用,开发中R.java文件是很重要的,所以解决此类问题按照下面的方法即可: 进入 eclipse后选择菜单栏中的 Projects ,然后选择 clean 这样就把 ...
- 关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题
因为和同学分开做的android软件,现在想整合他做的界面部分,于是拷贝了res和src文件夹的文件,其中包括一个res.menu文件夹中的XML.但是每次将该文件导入到工程总无法自动在R.java中 ...
- 一种导致android开发时无法生成R.java文件的原因
为什么80%的码农都做不了架构师?>>> 现象 gen文件夹下没有出现R.java文件 .java文件中无法自动引入应用的R,只能 import android.R 工程右键 ...
- Android下HelloWorld项目的R.java文件介绍
R.java文件介绍 HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R { public s ...
- Android工程中R.java文件的重新生成——注意资源文件的错误
一.如果二或三步骤还是不能生成R.java中内容,一般是XML文件有错,或者xml引用的资源文件找不到,用排除法删除xml后执行二或者三的步骤. 二. 在Android中使用开源代码或者自己开发项目的 ...
- android 学习 解决R.java不能自动生成问题,编译时adb.exe 找不到问题
android 学习 解决R.java不能自动生成问题,编译时adb.exe 找不到问题 参考文章: (1)android 学习 解决R.java不能自动生成问题,编译时adb.exe 找不到问题 ( ...
- Android Apk瘦身方案1——R.java文件常量内联
R.java 文件结构 R.java 是自动生成的,它包含了应用内所有资源的名称到数值的映射关系.先创建一个最简单的工程,看看 R.java 文件的内容: R文件生成的目录为app/build/gen ...
最新文章
- Protractor测试环境搭建
- 枚举中关于toRaw()和fromRaw(3)编译出错
- http连接过程遇到的各种性能瓶颈
- ViSP中识别AprilTag的C++实例代码与运行结果
- python系统学习1-程序设计的基本方法
- 张正友摄像机标定的研究(MATLAB+OpenCV)
- 腾讯信息流推荐业务实践:内容分发场景的多目标架构实践
- SpringCloud 微服务消费者之间相互调用的方式
- 华为NP课程笔记24-BFD
- 第12期 《博观而约取,厚积而薄发》6月刊
- UESTC_树上战争 CDOJ 32
- 【CSS】关键字 -webkit-fill-available 详解
- 最后采用加权求和的方式得到样本的_一种婴幼儿视力自动检测方法与流程
- 未来居民健康档案编码以身份证号识别
- java 红牛摩托车_2017红牛世界五大越野摩托车系列耐力赛
- ServerThread
- 罗振宇2022“时间的朋友”跨年演讲 思维导图
- 金纳米粒子修饰MIL-101骨架材料(AuNPs/MIL-101)/负载COF-TpPa-1(Au NPs/COF-TpPa-1)|齐岳试剂
- 多卡聚合技术在应急可视化指挥调度的应用
- 清除浮动(高度塌陷)的方法及原理!
热门文章
- 梦断代码阅读笔记03
- C# http 性能优化500毫秒到 60 毫秒
- ---Intel SSD 750 under Linux
- lispbox 安装运行.sh的时候出现 lispbox.sh: 2: lispbox.sh: Bad substitution
- c语言exit和return区别,在fork和vfork中使用
- php安装pear和phpunit
- 【Smooth】非线性优化
- Android OpenGL使用GLSurfaceView预览视频
- SQL Relay开源的数据库池连接代理服务器
- CentOS用yum安装X Window