iOS 测试三方 KIF 的那些事

时间:2022-11-02 00:25:28

一: KIF 三方库的配置  

今天的广州天气还不错,原本想试试UI测试的,前几天也了解到很多公司都在用 KIF 这这三方框架!!今天也就试着做做,可就跪在了这个安装上,我用cocopods 导入了 KIF(不用cocopods 的方法可以去 git 具体自己看看怎么配置这是Git地址:GitKIF ),现在是已经更新到 3.4.2 这个版本了,去git上看到两天前作者还在更新。说明KIF是没问题还在更新维护是可用的。结果。。。Run~

dyld: Library not loaded: @rpath/XCTest.framework/XCTest
Referenced from: /Users/mxsm/Library/Developer/CoreSimulator/Devices/B6E8A337-2678-4C4B-9DF1-C97586418141/data/Containers/Bundle/Application/6F05F8A0-A445-49F9-B222-570CA7C49EB6/sinatest.app/sinatest
Reason: image not found

导演,你出来,这他么是什么鬼!!

开玩笑,这个问题其实我也纠结了许久,上网搜了许多许多的方法,尝试了很多次!结果。。还是漏掉了要配置写东西!下面是官方英文版本,英语好的仔细阅读,不好的,请闭眼一秒钟,我们去下面看看。。。

Final Test Target Configurations

You need your tests to run hosted in your application. Xcode does this for you by default when creating a new testing bundle target, but if you're migrating an older bundle, follow the steps below.

First add your application by selecting "Build Phases", expanding the "Target Dependencies" section, clicking on the "+" button, and in the new sheet that appears selecting your application target and clicking "Add".

Next, configure your bundle loader. In "Build Settings", expand "Linking" and edit "Bundle Loader" to be $(BUILT_PRODUCTS_DIR)/MyApplication.app/MyApplication where MyApplication is the name of your app. Expand the "Testing" section and edit "Test Host" to be $(BUNDLE_LOADER). Also make sure that "Wrapper Extension" is set to "xctest".

The last step is to configure your unit tests to run when you trigger a test (⌘U). Click on your scheme name and select "Edit Scheme…". Click on "Test" in the sidebar followed by the "+" in the bottom left corner. Select your testing target and click "OK".

好,我把这整个给大家翻译成简单粗暴的形似。。(其实我都是百度翻译摸索的。劳之看不懂!)

一: 项目名Tests对象 (项目名+Tests)---> Build Phase ---> Target Dependencies ---> "+" --->"项目的Tests文件"(去百度一下这个 tests 文件 和UItests 文件有什么区别)

二: 项目名Tests对象 ---> Build Settings ---> Linking(直接搜)---> Bundle Loader 填写"$(BUILT_PRODUCTS_DIR)/项目名称.app/项目名称"

三: 项目名Tests对象 ---> Build Settings ---> Wrapper Extension (直接搜)设置成 "xctest"

四: 点击你 RUN 按钮隔壁的隔壁的项目target --->  Edit Scheme... ---> Test 看看里面有没有你要测试的项目,没有就添加(一般都有感觉)!

这时候的配置完成了,Command + U,没有问题,以为可以了,可当自己写了一个继承 KIFTestCase 的文件的时候,问题又有了!说<KIF/KIF.h>头文件找不到,其实这个也正常,你现在是在 Tests 对象(这个项目里就是ZXDNLLTestTests)里面。不是在你得项目target对象里面,你得重新配置一下。下面是在你得 tests 对象里面的配置,这点地方填写的具体内容,从你的target对象(这个项目里面就是 ZXDNLLTest,怕有同学还是不明白!)里面粘贴复制就行了!

iOS 测试三方 KIF 的那些事

iOS 测试三方 KIF 的那些事

以上这些配置了之后,我的 KIF 也就可以了。创建 LoginTestCasse ,再说一次,它是继承 KIFTestCase 如图:

iOS 测试三方 KIF 的那些事

二:具体测试代码详解

//
// LoginTestCase.m
// ZXDNLLTest
//
// Created by mxsm on 16/4/28.
// Copyright © 2016年 mxsm. All rights reserved.
// #import "LoginTestCase.h"
#import "AFNetworking.h"
@implementation LoginTestCase /*
beforeAll 是一个在所有测试运行之前被调用一次的特殊方法。你可以为你这里运行的测试设置任何实体变量和初始化条件.
tester 对象是指定的 KIFUITestActor 类的一个缩略名称。这个类包含了模拟用户动作的方法,包括触摸和滑动.
tapViewWithAccessibilityLabel 这也许是最常被用到的测试动作方法。正如其名称所显示的,它可以在给定的辅助标签模拟在视图上的触击。在大多数情况下,辅助标签和可视的文本标签(例如按钮组件)是配套的。否则你就需要手动设置辅助标签.
一些控件,诸如 UISwitch,更加复杂,需要比简单的触击更复杂的步骤来触发。 KIF 提供了一个特殊的 setOn:forSwitchWithAccessibilityLabel: 方法来改变一个切换的状态.
*/ - (void)beforeAll {
////
[tester tapViewWithAccessibilityLabel:@"Settings"];
[tester setOn:YES forSwitchWithAccessibilityLabel:@"Debug Mode"];
[tester tapViewWithAccessibilityLabel:@"Clear History"];
[tester tapViewWithAccessibilityLabel:@"Clear"]; } // 这里的测试方法使用 test开头的,后面的自己写,你要用command+U 的形式运行的话,它的运行的顺序就是除了test之外的后面的按字母排序的方式运行,比如下面的这个方法,出test之外第一个字母是Z,你要是又命名一个方法,testyou ,它是y ,他就会先运行。当然你也可以一个方法一个方法的运行,点击方法前面的框框就OK了! -(void)testzhangxuone
{
// 可以在这里添加自己需要的测试的内容!
int a = 0;
if (a==0) {
NSLog(@"you are successful"); }
} /*
下面是在简书找到的一篇关于单元测试的一个网络请求的测试,其实大家可以对比一下KIF !!!
KIF和苹果自带的UI测试两者本质是一样的!
不过下面的请求是 AFNetworking 3.0 以前的版本的,大家用还是用3.0之后的吧!
AFHTTPSessionManager *session = [AFHTTPSessionManager manager];
关于3.0 之后的给大家一个连接,可以去看看!====== http://www.jianshu.com/p/047463a7ce9b */ // 下面方法的原文链接 ============= http://www.jianshu.com/p/8bbec078cabe //-(void)testRequest{
// // 1.获得请求管理者
// AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",nil];
// // 2.发送GET请求
// [mgr GET:@"http://www.weather.com.cn/adat/sk/101110101.html" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
// NSLog(@"responseObject:%@",responseObject);
// XCTAssertNotNil(responseObject, @"返回出错");
// self.stAlertView = [[STAlertView alloc]initWithTitle:@"验证码" message:nil textFieldHint:@"请输入手机验证码" textFieldValue:nil cancelButtonTitle:@"取消" otherButtonTitle:@"确定" cancelButtonBlock:^{
// //点击取消返回后执行
// [self testAlertViewCancel];
// NOTIFY //继续执行
// } otherButtonBlock:^(NSString *b) {
// //点击确定后执行
// [self alertViewComfirm:b];
// NOTIFY //继续执行
// }];
// [self.stAlertView show];
// } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// NSLog(@"error:%@",error);
// XCTAssertNil(error, @"请求出错");
// NOTIFY //继续执行
// }];
// WAIT //暂停
//} @end 

网上有一篇翻译的国外的文章,好多好多写 KIF 的直接是把那篇给通篇粘贴复制了,链接还是给大家,你理解了KIF,知道他是做什么的,也导入成功了,你可以去看看那篇文章,对自己肯定也有帮助,链接给大家! KIF学习链接

还有一点注意,我代码里面给的 http://www.jianshu.com/p/8bbec078cabe 这个链接里面,还有几个链接不错的,有更进一步学习单元测试的视频,大家进去自己看就行了!

iOS 测试三方 KIF 的那些事的更多相关文章

  1. iOS 音频视频图像合成那点事

    代码地址如下:http://www.demodashi.com/demo/13420.html 人而无信不知其可 前言 很久很久没有写点什么了,只因为最近事情太多了,这几天终于闲下来了,趁此机会,记录 ...

  2. iOS 常用三方类库整理

    iOS 常用三方类库整理 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://gi ...

  3. 使用appium进行ios测试,启动inspector时遇到的问题&lpar;一&rpar;

    最近在公司,让做ios的自动化测试,因为以前做过android的自动化测试,用的也是appium,觉得没什么,结果一开始在搭建环境就遇到了很多的问题,现在将我遇到的问题,以及解决方法,给大家分享出来. ...

  4. 如何利用Pre&period;im分发iOS测试包

    大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安 ...

  5. iOS 常用三方&lpar;持续更新&rpar;

    iOS 常用三方 1.ZWMSegmentController 分页控制器 https://github.com/weiming4219/ZWMSegmentController

  6. 【读书笔记】iOS-软件测试与iOS测试

    一,软件测试的类型. 1.软件测试按照测试类型,可以划分为:单元测试,集成测试和系统测试. 2.单元测试是指对软件系统中最小可测试单元进行的检查和验证. 3.集成测试,在iOS软件开发中,集成测试主要 ...

  7. iOS测试中发现一个textview控制,使用clear&lpar;&rpar;无法清除文字

    iOS测试中发现一个textview控制,使用clear()无法清除

  8. iOS 测试在应用发布前后的痛点探索以及解决方案

    作者-芈 峮 前言 iOS 开发从 2010 年开始在国内不断地升温,开发和测试相关的问题不绝于耳.iOS 测试主要涉及哪些内容?又有哪些挑战呢?带着疑问我们开始第一个大问题的讨论. iOS 测试的范 ...

  9. 经典软件测试面试题目:Android 和 ios 测试区别?这样回答:稳!

    Android 和  ios 测试区别? App 测试中 ios 和 Android 有哪些区别呢?1.Android 长按 home 键呼出应用列表和切换应用,然后右滑则终止应用:2.多分辨率测试, ...

随机推荐

  1. 控制Linux下 mono 服务的启动停止

    当Window下的服务部署到Linux的时候,我们一般用Mono.service 来启动停止.参数比较多,不太好用.于是有个这个Shell脚本. 用法:moa s1 start #启动         ...

  2. c&num; winform 窗体起始位置 设置

    窗体起始位置为顶部中间,WinForm居中显示: ; ; this.StartPosition = FormStartPosition.Manual; //窗体的位置由Location属性决定 thi ...

  3. 分享php中四种webservice实现的简单架构方法及实例

    一:PHP本身的SOAP所有的webservice都包括服务端(server)和客户端(client).要使用php本身的soap首先要把该拓展安装好并且启用.下面看具体的code首先这是服务端实现: ...

  4. 线程---JDK查看线程

    JDK和LINUX提供的查看当前运行的线程的工具: KILLkill -3 [pid]:线程相关信息会列在Console上JSTACKjstack [pid]:查看线程运行状况,如等锁,运行等JCON ...

  5. 引擎设计跟踪&lpar;九&period;14&period;2d&rpar; &lbrack;翻译&rsqb; shader的跨平台方案之2014

    Origin: http://aras-p.info/blog/2014/03/28/cross-platform-shaders-in-2014/ 简译 translation: 作者在2012年写 ...

  6. ios显示手机信息

    NSString *strname=[[UIDevice currentDevice] name]; NSLog(@"设备名:%@",strname); NSString *str ...

  7. Mysql 查询 字符串 (索引和通配符)

    需要查询的 Mission_Info  字段 值   CYVR-0220-1240-ZYTX-1415-1740-ZUUU-9999-9999-ZZZZ-9999-9999-ZZZZ SELECT M ...

  8. java中单例设计模式

    在java中创建单例的方式主要有三种:饿汉式.懒汉式.登记式.以下内容均是摘抄自 http://blog.csdn.net/jason0539/article/details/23297037/ 一. ...

  9. VC&plus;&plus;记录

    1. 记录时间 #include <atlstr.h>#include <time.h>clock_t clockBegin, clockEnd; clockBegin = c ...

  10. go1&period;8之安装配置

    说明: 之前学习过go语言(大概是0.9版本),后来更新太快,也没怎么使用,就荒废掉了,今年有项目需要用go开发,重新捡起. 这是我在学习go语言过程中整理的内容,这里记录下,也方便我以后查阅. 操作 ...