之前对单元测试没什么概念,今天研究之,发现用途广泛啊。
第一步:
创建项目时勾选(Include Unit Tests, Include UI Tests)这两项。

如果没有勾选,那也没关系,项目内可以添加,File-New-Target

然后添加Test栏中的两项即可:

第二步:
创建测试文件,Command N,选择Unit Test Case Class

然后创建一个XCTestCase的对象

我们新建一个文件,继承于NSObject的PersonModel:
#import <Foundation/Foundation.h>
@interface PersonModel : NSObject
/**
* 用户名
**/
@property (nonatomic, copy) NSString *userName;
/**
* 年龄
**/
@property (nonatomic, assign) NSInteger age;
/**
* 性别 0girl 1boy
**/
@property (nonatomic, assign) NSInteger sexCode;
- (BOOL)isGoodStudent;
@end
一个isGoodStudent方法,判断用户名长度大于0,年龄大于3,小于100,性别为1.
接下来前往MyTest.m中编写测试方法(需要以test开头):

点击方法前面的勾号即可编译,如果想对所有的测试方法编译,command U即可。
还有其他断言:
- (void)testDifferentAssert//(全部通过的测试)
{
BOOL isFaile = NO;
if (isFaile) {
XCTFail("生成失败的测试");//生成一个失败的测试
}
NSString *nilString = nil;
XCTAssertNil(nilString,"空对象,才能通过测试");
NSString *notNilString = @"123";
XCTAssertNotNil(notNilString,"非空对象,才能通过测试");
BOOL oneBool = YES;
XCTAssert(oneBool,"结果为true,才能通过测试");
BOOL twoBool = YES;
XCTAssertTrue(twoBool,"结果为true,才能通过测试");
BOOL threeBool = NO;
XCTAssertFalse(threeBool,"结果为false,才能通过测试");
NSArray *arrOne = [NSArray arrayWithObjects:@"123", nil];
NSArray *arrTwo = arrOne;
XCTAssertEqual(arrOne, arrTwo,"二者相同,才能通过测试");
NSString *oneString = @"aaa";
NSString *twoString = @"aaabbb";
XCTAssertNotEqual(oneString, twoString,"二者不相同,才能通过测试");
CGFloat aValue = 5;
CGFloat bValue = 6;
XCTAssertEqualWithAccuracy(aValue, bValue, 10,"二者差值在10(accuracy)内,才能通过测试");
CGFloat cValue = 5;
CGFloat dValue = 100;
XCTAssertNotEqualWithAccuracy(cValue, dValue, 10,"二者误差不在10(accuracy)内,才能通过测试");
NSArray *arrThree = @[@"111"];
XCTAssertThrows([arrThree objectAtIndex:10],"发生异常时,才能通过测试");
NSMutableArray *arrFour = [NSMutableArray array];
XCTAssertNoThrow([arrFour addObject:@"ssd"],"无异常,才能通过测试");
}
部分未通过的效果:


很好很强大,加油~~
网友评论