用java和junit编写app自动化测试用例

package myTest;

import static org.junit.Assert.*;

import io.appium.java_client.android.AndroidDriver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities; 

import java.io.File;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class MyTestCase {
    private AndroidDriver driver;

    @Before
    public void setUp() throws Exception {
        //设置apk的路径
        File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "apps");
        File app = new File(appDir, "calculator_debug_2.3.1_10000_svn80220_200_staging_2017_12_16.apk");

        //设置自动化相关参数
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "7N2SSE158P001892");
        capabilities.setCapability("deviceName", "P4M7N15104001008");

        //设置安卓系统版本
        capabilities.setCapability("platformVersion", "4.4.2");
        capabilities.setCapability("platformVersion", "6.0");
        //设置apk路径
        capabilities.setCapability("app", app.getAbsolutePath()); 

        //设置app的主包名和主类名
        capabilities.setCapability("appPackage", "com.gomo.calculator");
        capabilities.setCapability("appActivity", ".ui.activity.MainActivity");

        //初始化
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

    @After
    public void tearDown() throws Exception {
        driver.quit();
//        driver.closeApp();
//        driver.launchApp();
    }

    @Test
    public void test_Add() {
        driver.findElement(By.id("com.gomo.calculator:id/input_num_1")).click();
        driver.findElement(By.id("com.gomo.calculator:id/display_op_add")).click();
        driver.findElement(By.id("com.gomo.calculator:id/input_num_2")).click();
        driver.findElement(By.id("com.gomo.calculator:id/display_eq")).click();
        System.out.println("test_Add success!!!");

    }

    @Test
    public void test_Mul() {
        driver.findElement(By.id("com.gomo.calculator:id/input_num_3")).click();
        driver.findElement(By.id("com.gomo.calculator:id/op_mul")).click();
        driver.findElement(By.id("com.gomo.calculator:id/input_num_4")).click();
        driver.findElement(By.id("com.gomo.calculator:id/display_eq")).click();
        System.out.println("test_Mul success!!!");

    }

}

python版请移步:用python和unittest编写app自动化测试用例

原文地址:https://www.cnblogs.com/mgzc-1508873480/p/8280540.html

时间: 2024-10-10 19:10:14

用java和junit编写app自动化测试用例的相关文章

用python和unittest编写app自动化测试用例

import unittest import webdriver import time class Test(unittest.TestCase): @classmethod def setUpClass(self): cap = {} cap['platformName'] = 'Android' cap['platformVersion'] = '4.4.2' cap['deviceName'] = '7N2SSE158P001892' cap['noReset'] = 'noReset'

编写UI自动化测试用例原则

1.一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器.2.一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统3.尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况) ,验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强. (我们尽量遵循用户正常使用原则编写脚本即可)4.脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其

Eclipse中使用Junit编写测试用例

Eclipse自带Junit插件,不用安装就能在项目中编写测试用例,非常方便. 在项目中添加Junit库 在编写测试用例之前,需要先引入Junit.对项目根目录右键,选择Properties,Java Build Path,Libraries,如图: Add Library,选择Junit: 点Next选择Junit版本,然后Finish就完成了引入. 编写测试用例 假设有如下类: package choon.test; public class Calculate { public int A

Java单元测试(Junit+Mock+代码覆盖率)

原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变量是数值(或字符) 主要边界:最小值,最大值,无穷大(

app自动化环境搭建之Appium

app自动化环境搭建之Appium 1. 安装node.js (1) 安装node.js 我的电脑是64位的,选择64位的安装包 (2) 验证安装node.js是否安装成功 运行--> cmd-->  输入 node -v ,显示版本号,说明安装成功:若安装失败,检查电脑版本是否与安装版本一致 2.配置Android SDK环境 (1) 下载adb压缩包,并解压到D盘根目录 adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过ADB我们可以在Eclipse中方面通

APP自动化框架LazyAndroid使用手册(1)--框架简介

作者:cryanimal  QQ:164166060 APP自动化简介 APP自动化,即通过自动化的方式,对APP施行一系列的仿按键输入.触摸屏输入.手势输入等操作,以达到对APP的功能进行自动化测试的目的. 其一般过程如下图所示: APP自动化常用工具简介 Monkey Monkey 是Android SDK 自带的自动化测试工具,可以运行在模拟器里或实际设备中,它向系统发送随机的用户事件流,如按键输入.触摸屏输入.手势输入.Sensor 事件等, 实现对正在开发的应用程序进行表现或者压力测试

Java单元测试(Junit+Mock+代码覆盖率)---------转

Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变

对基于JUnit和Ant的测试用例执行过程使用Kieker(AspectJ)进行监控的方法

这篇日志的目的从标题里可以看出来.这也是我们实验需要,必须总结一下,方便其他师弟师妹在这个基础上做实验. 我已经介绍了很多基于Kieker的监控方法,这里以Prefuse这个开源可视化Java框架为例,总结怎么基于JUnit和Ant实现对开源软件自带测试用例执行过程的监控.在这个链接中,选择最新的版本下载(Prefuse已经有些年头没更新了,不过这个框架确实还不错). 解压之后用Eclipse打开其build.xml,发现这个项目的build.xml结构还比较奇葩.如果运行ant all,可以生

怎样快速上手Android Studio,用它来编写APP

哈喽大家好,yogurt和大家好久不见啦!今天要跟大家分享的是:论学渣如何快速用Android Studio写一个APP! 首先,yogurt要声明一下,这篇文章是针对新手的,很基础.所以高手就不用看啦,不然我就是在你们面前班门弄斧了.当你想要写一个APP时,相信你一定和当初的yogurt有一样的困惑.要用什么软件来写?这个软件的操作难度高不高?对编程水平的要求大不大?那么,接下来yogur就一 一为你解答吧!~~ 最常见的编写APP的软件当然就是Eclipse,Android Studio,A