# Unit Testing
###
- ``
- ,
- ()
- ,,,.
###
- -> -> -> ()-> -> -> ``->
- ,,,,
###
- ,()
- API
-
- `Mock`
### : ``.``.``
- ,.
###
- ,
- ,
###
- UI
- ``
- SDK// ``
### iOS
-
```
// XCTAssertNil() // expression,id
// XCTAssertNotNil() // expression,id
// XCTAssert()// expressiontrue, bool
// XCTAssertFalse() expressionfalse, bool
// XCTAssertEqualObjects(, ) expression1 expression2
// XCTAssertNotEqual(, )expression1 expression2
// XCTAssertEqual(, )expression1 expression2 ,
// XCTAssertNotEqual(, )expression1 expression2
//XCTAssertEqualWithAccuracy(, , ) expression1 expression2accuracy
//XCTAssertGreaterThan(, ) expression1 expression2
//
// XCTAssertThrows() , expression
```
```
@weakify_self;
[self.testItem addKVOForPath:@"desc" withBlock:^(id newValue) {
@strongify_self;
XCTAssertEqualObjects(newValue, @"A cup of wine");
[KVOExpectation fulfill]; //
}];
self.testItem.desc = @"A cup of wine";
[self waitForExpectationsWithTimeout:0.001f handler:^(NSError *error) {
[weakSelf.testItem removeAllKVOs];
}];
```
```
NSInteger targetCount = 1000;
@weakify_self;
[self measureBlock:^
{
@strongify_self;
for (NSUInteger i = 0; i < targetCount; i++)
{
@autoreleasepool
{
[self.testItem addKVOForPath:@"weight" withBlock:^(id newValue)
{
//NSNumber *weight = (NSNumber *)newValue;
}];
[self.testItem removeAllKVOs];
}
}
}];
```