关于Xcode UI自动化测试的介绍,网上有很多,那我就直接来说一下使用步骤。
一、创建工程,选择Include UI Tests
二、工程创建完毕后,会多出一个UITestDemoTests
文件目录,如下:
三、如果在创建工程时没有勾选Include UI Tests
,还可以通过下面的方式来添加UI Tests
部分,如下,
四、进入UITestDemoUITests.m
开始测试操作,如下图,
点击上图中的录制按钮,然后等工程运行好,就可以按照自己想要测试的内容来一步一步操作,同时会把你的操作以代码的形式录制下来。
下面是我录制好的代码:
#import <XCTest/XCTest.h>
@interface UITestDemoUITests : XCTestCase
@end
@implementation UITestDemoUITests
- (void)setUp {
[super setUp];
self.continueAfterFailure = NO;
[[[XCUIApplication alloc] init] launch];
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testMyDemo
{
XCUIApplication *app = [[XCUIApplication alloc] init];
[app.buttons[@"\u8ba1\u7b97"] tap];
[app pressForDuration:1.0f];//延时执行下一步操作
[app.navigationBars[@"SecondView"].buttons[@"Back"] tap];
}
点击command+u
进行测试,你的模拟器或真机就会自动运行项目,按照之前录制好的操作自动进行测试。
如下面的效果图
顺便贴一下我项目中的部分测试代码:
#pragma mark 测试
- (void)testFaceRecognize
{
for (int i = 0; i < TEST_COUNT; i ++)
{
XCUIApplication *app = [[XCUIApplication alloc] init];
XCTAssert(app != nil,@"获取当前应用失败!");
[app pressForDuration:DEALY_TIME];
XCTAssert(app.collectionViews.cells != nil,@"获取Item失败!");
[[app.collectionViews.cells containingType:XCUIElementTypeImage identifier:@"main_item01"].element tap];
XCUIElementQuery *collectionViewsQuery = app.images[@"main_back_image.png"].collectionViews;
[collectionViewsQuery.images[@"camera_image_meitu_1"] tap];
XCUIElement *button = app.sheets.buttons[@"\u672c\u5730\u6d4b\u8bd5\u56fe\u7247"];
XCTAssert(button != nil ,@"获取Button失败!");
[button tap];
[[[[collectionViewsQuery childrenMatchingType:XCUIElementTypeCell] elementBoundByIndex:0].otherElements containingType:XCUIElementTypeImage identifier:@"camera_image_meitu_2"].element tap];
[button tap];
[[[[collectionViewsQuery childrenMatchingType:XCUIElementTypeCell] elementBoundByIndex:1].otherElements containingType:XCUIElementTypeImage identifier:@"camera_image_meitu_2"].element tap];
[button tap];
[[[[collectionViewsQuery childrenMatchingType:XCUIElementTypeCell] elementBoundByIndex:2].otherElements containingType:XCUIElementTypeImage identifier:@"camera_image_meitu_2"].element tap];
[button tap];
[[[[collectionViewsQuery childrenMatchingType:XCUIElementTypeCell] elementBoundByIndex:3].otherElements containingType:XCUIElementTypeImage identifier:@"camera_image_meitu_2"].element tap];
[button tap];
[[[[collectionViewsQuery childrenMatchingType:XCUIElementTypeCell] elementBoundByIndex:4].otherElements containingType:XCUIElementTypeImage identifier:@"camera_image_meitu_2"].element tap];
[button tap];
[[collectionViewsQuery.cells.otherElements containingType:XCUIElementTypeImage identifier:@"camera_image_meitu_2"].element tap];
[button tap];
[app.images[@"main_back_image.png"].buttons[@"\u4eba\u8138\u8bc6\u522b"] tap];
[app pressForDuration:DEALY_TIME];//延时执行下一步测试
}
}
就先写这么多,有问题的可以留言。代码不足的地方还请各位多多指教,谢谢了。