4月 21

Jfinal quartz动态的增、删、暂停、恢复job

得益于quartzjfinal-ext插件可以很方便的在jfinal中配置定时任务,方法如下:

  1. 在pom.xml中增加依赖:
     <dependency>
         <groupId>com.jfinal</groupId>
         <artifactId>jfinal-ext</artifactId>
         <version>3.1.4</version>
     </dependency>
     <dependency>
         <groupId>org.quartz-scheduler</groupId>
         <artifactId>quartz</artifactId>
         <version>2.2.2</version>
     </dependency>
    

继续阅读

3月 22

redis队列

常用的队列有RabbitMQ,Redis,ZeroMQ, ActiveMQ, Kafka等,其中redis是较为轻量级的,这里简单介绍下。

Redis这个缓存的应用之所以能用作队列,要得益于lpushbrpop两条命令:

    lpush 在list左侧插入数据
    rpush 在list右侧插入数据
    brpop 在list右侧弹出数据(如果没有数据,就阻塞进程)
    blpop 在list左侧弹出数据(如果没有数据,就阻塞进程)

继续阅读

3月 16

Apache Commons Exec教程

如果你看到这篇文章,相信你肯定使用java新建过子进程,去执行shell命令,并且肯定耗费了不少时间。你可能会认为java自身的Runtime.exec()很简单,而Apache Commons Exec太过臃肿,纯粹是在浪费时间。

但是,我在使用Runtime.exec()的过程时,经历了一系列痛苦的过程。一起来看下commons exec是怎么把这一过程变简单的。 继续阅读

11月 17

Jenkins迁移,ln(java.nio.file.DirectoryNotEmptyException)错误

机器搬迁,要把jenkins服务器迁移到其他的机器上,下面是操作步骤:

  1. 停掉tomcat
  2. .jenkins/workspace文件夹太大,按理说这个可以不迁移,里面就是check的代码,及其构建产物
  3. zip -r jenkins-bak.zip ~/.jenkins,对.jenkins文件夹进行zip压缩。
  4. copy jenkins-bak.zip到新机器,unzip jenkins-bak.zip
  5. 启动tomcat

继续阅读

1月 14

Robotium 用例分组运行

Robotium是开源的Android界面自动化测试的框架,它内部集成了junit,以test开头的方法,会自动识别成测试用例,这样做带来快捷的同时,却也带来了不便。如果我们要分功能、分模块等,Robotium不支持自定义的testsuite。在这里我们可以用adb shell am instrument这条命令来实现分组。 继续阅读

10月 31

testng增加失败重跑机制

使用Testng框架搭建自动测试框架,经常会需要增加失败自动截图,以及失败重跑功能,一般有两种方式,①修改testng的源码;②使用testng的listener。修改testng源码的方式不推荐;第二种方法,网易qa的一片文章介绍的比较全了,直接转过来,http://qa.blog.163.com/blog/static/19014700220138585422735/,不过解决失败重跑的case计入总case数的问题,代码写得较繁琐,修改了下。 继续阅读

10月 29

ios界面自动化工具–Appium

ios界面自动化工具–Appium

Appium是一款开源的移动端自动化测试框架,支持Android和Ios,之前简单介绍过Appium,链接https://www.yeetrack.com/?p=639。最近在做ios的自动化测试,再详细记录一下过程。

安装Appium

既然使用Appium框架,安装肯定是必须的,两种方式源码安装,或者直接安装二进制dmg文件。

10月 14

Roboitum中加入失败重跑机制

Roboitum中加入失败重跑机制

Robotium是个开源的android功能测试自动化框架,比较流行。我平时使用robotium+maven+spoon,这样的组合做androd自动化。做界面自动化,尤其是移动端,case经常失败,网络问题、等待机制不合理、手机问题等等。一个case失败后,再次运行可能又正常了,这种情况很多。其实我们在使用Robotium时,可以手动实现case失败后,重跑几次,如果几次都失败了,那么case才判定为失败。 继续阅读