[S01E01]测试初体验

362 阅读1分钟

目标1:使用UnitTest快速验证一个函数的正确性 目标2:使用UITest操作任意App的UI

一、UnitTes初体验

1、新建一个Demo工程,勾选include Tests

new project

2、新建一个Caculater文件并且实现一个max取最大值的函数

输入:形如字符串1,2,3,5,8 输出:字符串中的最大值

+ (float)max:(NSString *)valueStr {
    NSArray *array = [valueStr componentsSeparatedByString:@","];
    float max =[[array valueForKeyPath:@"@max.floatValue"] floatValue];
    return max;
}

在实际开发的过程中最好还要加一步数据校验。在此为了方便起见,我们假定输如的valueStr是符合要求的。

3、在DemoTest新建测试文件CaculaterTests

#import <XCTest/XCTest.h>
#import "Caculator.h"

@interface CaculaterTests : XCTestCase

@end

@implementation CaculaterTests

- (void)testMax{
    float value = [Caculator max:@"1,2,3"];
    float expectValue = 3;
    XCTAssertEqual(value, expectValue);
}

@end

4、执行测试

方式1:快捷键cmd+u测试全部用 方式2:点击IDE的测试按钮

测试成功! success

到此为止,你应该对自己编写的这个函数的正确性充满了信心!如果你还想进一步了解,请移步iOS中的单元测试

二、UITest初体验

在手机客户端的测试中我们经常需要操作UI。

操作:打开safari - 输入youku.com - 滑动5次

-(void)testSafariSlide{
    
    XCUIApplication *safari = [[XCUIApplication alloc] initWithBundleIdentifier:@"com.apple.mobilesafari"];
    [safari launch];
    
    XCUIElement *inputTf = safari.otherElements[@"URL"];
    XCTAssertTrue([inputTf waitForExistenceWithTimeout:3]);
    [inputTf tap];
    [safari.textFields[@"URL"] typeText:@"https://youku.com"];
    [safari.buttons[@"go"] tap];
    for (int i = 0; i< 5; i++) {
        [safari swipeUp];
    }
    
    sleep(10);
}