alwaystest

Results 88 issues of alwaystest

# Android自动化测试与持续集成 标签(空格分隔): Android --- 又来搞Android自动化了,上篇文章总结的还是可以的,一晚上就把runner跑起来了。 之前写的时候还没有接触到Android自动化测试,只是搭了个架子,每次Push的时候编译一个APK出来。 现在网上讲Android单元测试的文章简直丰富的不得了,但是自动化单元测试的好像没见多少,可能是因为太简单了吧。 今天在运行单元测试的时候终于让我碰上了一个坑。 首先我的单元测试使用了Robolectric。 Robolectric有两个类,`RobolectricTestRunner.class`和`RobolectricGradleTestRunner.class` https://github.com/robolectric/robolectric的Readme中给出的使用方法是 ``` @RunWith(RobolectricTestRunner.class) ``` 但是我们项目中却使用了 ``` @RunWith(RobolectricGradleTestRunner.class) ``` 根据代码注释 > /** > - Test runner customized for running unit...

# GitLab-CI的Cache 标签(空格分隔): CI --- https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/280 > I had this problem too but I think it stems from a fundamental misunderstanding of the cache feature. What I (and, I think...

# Android单元测试解耦Application中的第三方依赖初始化 标签(空格分隔): Android --- 使用Robolectric对项目进行单元测试的时候,由于应用使用了BugHD提供的崩溃日志上传功能,需要在Application中调用静态方法初始化FIR。而在单元测试中运行这行代码的时候会报错。 http://www.voidcn.com/blog/Eyebrows_cs/article/p-5036833.html 给出了一个很好的方案。通过写一个TestApplication类继承CustomApplication类,将初始化第三方的代码提取成一个允许子类重写的方法,在TestApplication类中重写改方法,空实现,然后Robolectric测试中指定使用TestApplication类。 这么一看,跟单元测试解耦MVP有异曲同工之妙呢。

# Android应用打包ApplicationId 标签(空格分隔): Android --- 打包Android应用的时候可以定义打包以后的应用的包名,使之与编写代码时Manifest中定义的Package不同。 > With the new Android Gradle build system, you can easily build multiple different versions of your app; for example, you can build both...

- [ ] Docker GitLab SSH #10 #SSH - [ ] Docker GitLab HTTP 默认端口修改 #10 #HTTP - [ ] WeChat 回车登录ListView最后一条高亮 #5 - [ ] Eclipse导出JAR文件不能使用原因 #7 - [x]...

# RxJava与泛型 标签(空格分隔): Android RxJava --- 使用RxJava改造旧有的网络请求,在BaseRequest中添加一个方法,直接设置响应的Listener,在onResponse的时候调用subscriber.onNext(response),在onError的时候调用subscriber.onError(new Throwable(errMsg))。 用到泛型定义 返回值类型的时候,发现一个奇怪的问题。 ``` Observable.create(new Observable.OnSubscribe() { @Override public void call(final Subscriber

# Android代码混淆 标签(空格分隔): Android --- 不论是为了代码安全性,还是临时解决64K问题, 代码混淆实在是 Android上避不过的坑。说是代码混淆,其实除了混淆,Proguard还提供了代码优化,移除无用代码等功能。 我主要用到的是移除无用代码和混淆的功能。 ### 通常情况 Android Studio启用代码混淆很简单,**通常情况下**只要配置android application的build.gradle文件为以下格式即可: ``` android { ... buildTypes { release { //配置release版本 minifyEnabled true //开启代码混淆 // 从sdk/tools/proguard/proguard-android.txt文件读取默认的混淆规则,与当前配置Module下的proguard-rules.pro中的规则一同使用,proguard-rules.pro的文件名字可以修改,如果没有这个文件,需要手动新建一个 proguardFiles getDefaultProguardFile('proguard-android.txt'),...

# NDK依赖丢失 标签(空格分隔): Android NDK --- Android APP运行报错找不到本地方法, 看Log发现没有找到对应的`.so`文件。 最后发现是更新了一个依赖库,那个依赖库提供了比以前多的CPU架构支持,而另一个依赖库没有提供那么多的架构支持,导致支持架构少的依赖库的`.so`文件没有安装。 [关于Android的.so文件你所需要知道的](http://www.jianshu.com/p/cb05698a1968)这篇文章中提到了这点。记录一下。 > 没有为每个支持的CPU架构提供对应的.so文件 > 这一点在前文已经说到了,但你应该真的特别注意它,因为它可能发生在根本没有意识到的情况下。 > > 例如:你的app支持armeabi-v7a和x86架构,然后使用Android Studio新增了一个函数库依赖,这个函数库包含.so文件并支持更多的CPU架构,例如新增android-gif-drawable函数库: > > `compile ‘pl.droidsonroids.gif:android-gif-drawable:1.1.+’` > > 发布我们的app后,会发现它在某些设备上会发生Crash,例如Galaxy S6,最终可以发现只有64位目录下的.so文件被安装进手机。 > > 文/asce1885(简书作者)...

# Android Studio打开项目卡在Refreshing gradle project 标签(空格分隔): Android --- 今天升级了Android Studio2.2 更新完毕以后打开工程发现一直卡在Refreshing gradle project。 原来是之前对项目配置过指定使用的Gradle版本,而且指定到了Android Studio自带的Gradle路径,更新完毕Android Studio 以后,附带的Gradle版本变了,更新的时候是移除旧版本Android Studio 的,旧版的Gradle也没有了,使用旧版的gradle版本路径自然读取不到,没准在后台又开始默默的下载了。 解决方法,到项目设置中,把指定使用的Gradle路径指定到新版路径,重新编译即可。 记录一下。下载Gradle坑了我多次了。

# RxJava和RxAndroid,我来了 标签(空格分隔): Rx Android --- 这两个脚手架一直如雷贯耳。备受大家推崇。还有与之相关联的Retrofit,在Android界搅起一阵Rx风潮。让人心向往之。不知道其中到底有什么奥妙。 之前也有想过主动接触这两门新潮的技术,但是限于能力和时间,一直没有沉下心来慢慢学习。 今天借着重构代码的机会,终于静下心来好好学了一把,用起来的确是爽。 在4月份的时候,曾经尝试用NodeJS编写爬虫,当时为了解决回调地狱的问题,草草过了一遍Promise库,勉强能用起来了。没想到Rx系列看起来跟Promise还真是像。仔细想想也正常,技术万变不离其宗,各个领域用到的理念其实也差不了多少。比如单元测试通用的依赖反转原则。 今天要重构的地方问题是这样的: 在Android的主线程中,调用了数据库查询,而这个查询特别费时,就导致每次触发查询时界面卡顿。说到这里,好像《第一行代码》中查询数据库也没有启用新的线程来处理,可能以数据库比较小吧,开不开无所谓。但是一旦遇到这种查询费时的,用户体验就很差了。所以解决的方案是找一个快速简便的方案,把数据库查询放到子线程中,然后在UI线程中回调,改变界面。 我觉得阅读顺序应该是这样: 1. http://www.jianshu.com/p/9c2c8fe4bd0e 入门带逛,Android Studio配置依赖,初级API熟悉 2. http://www.jianshu.com/p/a7b2142ceffa 入门带逛,处理数据 3. http://www.jianshu.com/p/5e93c9101dc5 初级使用,可以开始跟着写了,最后有一个不错的例子。 4. http://www.jianshu.com/p/6a6f7a4be38d 异步多线程切换 5. http://gold.xitu.io/post/57d8b4b0c4c97100610509c6 手册,常用操作符 6....