在携程使用TestNG/JUnit 并行跑Appium 有两个关键的地方

转载 2015年11月17日 16:38:01

转载地址:https://testerhome.com/topics/1944


在携程使用TestNG/JUnit 并行跑Appium 有两个关键的地方:

  • 独立使用的Appium Server Wrapper
  • 控制并行的Device Store Queue

Word is Cheap,示例代码如下(公布这些代码是希望大家更多的精力放到改进Appium本身):

public abstract class AbstractDeviceStore<T extends Device> implements
        DeviceStore<T> {

    protected static final Logger log = LoggerFactory
            .getLogger(AbstractDeviceStore.class);

    protected final ReentrantLock lock;
    protected final Condition notEmpty;
    protected final TreeSet<Device> devicesInUse = new TreeSet<>();
    protected final Set<T> devices = new TreeSet<>();

    protected AbstractDeviceStore() {
        lock = new ReentrantLock(true);
        notEmpty = lock.newCondition();
    }

    @Override
    public Device take() throws InterruptedException {
        final ReentrantLock lock = this.lock;
        lock.lockInterruptibly();
        try {
            // log.debug("devices in use size {}", devicesInUse);
            while (devicesInUse.isEmpty()) {
                log.debug("take need wait ....");
                notEmpty.await();
            }
            return devicesInUse.pollFirst();

        } finally {
            lock.unlock();
        }
    }

    @Override
    public void put(Device device) {
        final ReentrantLock lock = this.lock;
        lock.lock();
        try {
            devicesInUse.add(device);
            notEmpty.signal();
        } finally {
            lock.unlock();
        }

    }

    @Override
    public Set<T> getDevices() {
        return new TreeSet<T>(devices);
    }

}

相关文章推荐

使用Appium官方提供的AppiumDriverLocalService类实现在eclipse启动和停止Appium服务

在网上和QQ群中,看到大多数学习appium的童鞋都是使用windows版本的Appium,windows版本有界面好操作,但实际使用过程中发现,如果连续跑几次用例会发现由于之前的appium服务se...

AppiumDriverLocalService.java

/*  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file...
  • wanglha
  • wanglha
  • 2015年11月17日 16:31
  • 1436

TestNG运行JUnit测试

现在,您已经了解了TestNG和它的各种测试,如果现在担心如何重构现有的JUnit代码,那就没有必要,使用TestNG提供了一种方法,从JUnit和TestNG按照自己的节奏。也可以使用TestNG执...
  • zm_21
  • zm_21
  • 2014年06月20日 15:50
  • 1193

[Android测试] AS+Appium+Java+Win 自动化测试之十:testng多设备并行测试实例封装

一、什么是并行测试多台设备同时执行多个用例。。。二、原理appium启动多个服务,每个用例对应手机,占用不同的服务端口进行测试。利用testng的多线程实现并行。 网上有些教程说grid,然后加什么...

Appium Android ——利用 TestNG 并行执行用例

一、测试类*注1 package com.testerhome; import io.appium.java_client.android.AndroidDriver; import java....
  • wanglha
  • wanglha
  • 2015年06月21日 11:03
  • 2587

Appium+TestNG+Grid并行运行测试用例

通过启动grid hub服务,注册多个节点设备,然后配置相应的testng.xml文件,达到并行运行测试的目的。     目前有两种方式启动多个Appium Server 一种是npm安装Appi...

appium android——利用testng和maven并行执行用例

一、测试类 package com.wiley.appiumConcurrent; import java.net.MalformedURLException; import java.net.UR...

在Eclipse中开发使用Spring IOC的JUnit/TestNG测试用例之详解

转载自:http://blog.csdn.net/radic_feng/article/details/6740438 我们期望能像在产品代码中一样,在测试用例中使用的bean也由S...

在Eclipse中开发使用Spring IOC的JUnit/TestNG测试用例之详解

我们期望能像在产品代码中一样,在测试用例中使用的bean也由Spring Context来管理,这样既可以充分利用Spring IOC的优势,同时又使得测试代码更像产品代码,有更好的测试效果。那么怎么...

TestNg多线程—— 并行执行测试

多线程并行执行测试,可以通过参数设置来实现不同级别的多线程配置测试 1、test级别的多线程测试,每个标签下的所有方法将在同一个线程中执行,不同的是在不同的线程来运行的。修改配置如下: 其...
  • DreamTL
  • DreamTL
  • 2016年12月22日 15:24
  • 1600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在携程使用TestNG/JUnit 并行跑Appium 有两个关键的地方
举报原因:
原因补充:

(最多只允许输入30个字)