添加测试用例步骤及示例
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
再次运行,测试通过。
在单元测试中,绿色表示测试通过,红色表示测试失败
这是一个简单的测试用例,希望能给你带来一些帮助