iOS 单元测试

添加测试用例步骤及示例

XCTest,它是Xcode7中内置的测试框架,使用起来非常简单
1.新建工程的时候添加测试单元
![]
2.单元测试示例
咱们在这假设一个用户向主播送礼物场景,根据用户送的礼物不同消耗的代金币不同
User(用户)->Present(礼物)->Anchor(主播)

Present类

//  Present.h
//  unitTestDemo
//
//  Created by kong.com on 16/11/17.
//  Copyright © 2016年 kong. All rights reserved.
//
#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, PresentEnum) {
    PresentEnum_Love = 0,     //爱心
    PresentEnum_Rose = 1,     //玫瑰花
    PresentEnum_Roadster = 2  //跑车

};
@interface Present : NSObject
@property (nonatomic ,assign)PresentEnum present;
@property (nonatomic ,assign)int goldCoins;//礼物需要的代金币
@property (nonatomic ,copy)  NSString*presentName;
- (instancetype)initWithPresent:(PresentEnum)present;

@end
#import "Present.h"
#define presentNameArr @[@"爱心",@"玫瑰花",@"跑车"]
@implementation Present
- (instancetype)initWithPresent:(PresentEnum)present {
    if (self = [super init]) {
        _present = present;
        _goldCoins = present;
        _presentName = presentNameArr[_present];
    }

    return self;
}
@end

Anchor类

//  Anchor.h
//  unitTestDemo
//
//  Created by kong.com on 16/11/17.
//  Copyright © 2016年 kong. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Anchor : NSObject
@property (nonatomic ,copy) NSString *anchorName;
- (instancetype)initWithName:(NSString *)name;
@end
- (instancetype)initWithName:(NSString *)name {
    self = [super init];
    if (self) {
        _anchorName = name;
    }
    return self;
}

User 类

//  User.h
//  unitTestDemo
//
//  Created by kong.com on 16/11/17.
//  Copyright © 2016年 kong. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Present.h"
#import "Anchor.h"
@interface User : NSObject
@property (nonatomic ,copy) NSString *userName;
- (instancetype)initWithName:(NSString *)name;
- (void)sendPresent:(Present *)present toAnchor:(Anchor *)anchor;
- (NSString *)test;
@end
#import "User.h"

@interface User ()

@property (nonatomic ,strong)Present *present;
@property (nonatomic ,strong)Anchor*anchor;

@end

@implementation User
- (instancetype)initWithName:(NSString *)name {

    if (self = [super init]) {
        _userName = name;
    }
    return self;

}
- (void)sendPresent:(Present *)present toAnchor:(Anchor *)anchor {
    _present = present;
    _anchor = anchor;

}
- (NSString *)test {

    NSString *returnStr = [NSString stringWithFormat:@"%@送%@给%@花费了%d代金币",_userName,_present.presentName,_anchor.anchorName,_present.goldCoins];

    return returnStr;
}
@end

在unitTestDemoTests.m中添加测试方法- (void)testsendPresent
这里写图片描述

- (void)testsendPresent {
    Anchor *anchor = [[Anchor alloc] initWithName:@"kong***"];

    Present *present = [[Present alloc] initWithPresent:PresentEnum_Rose];

    User *user = [[User alloc] initWithName:@"大白*"];
    [user sendPresent:present toAnchor:anchor];

    XCTAssertTrue([[user test] isEqualToString:@"大白*送玫瑰花给kong***花费了1金币"],@"测试送礼物");
}

在这个测试用例中大白*送玫瑰花给kong***花费了1代金币使用快捷键⌘U运行测试这里写图片描述
发现测试报错了检查发现XCTAssertTrue([[user test] isEqualToString:@"大白*送玫瑰花给kong***花费了1金币"],@"测试送礼物");文本里面少写了一个代XCTAssertTrue([[user test] isEqualToString:@"大白*送玫瑰花给kong***花费了1代金币"]加上一个⌘U再次运行,测试通过。这里写图片描述

在单元测试中,绿色表示测试通过,红色表示测试失败

这是一个简单的测试用例,希望能给你带来一些帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值