XCTest的小技巧,XCTest小技巧
XCTest 的小技巧
試了一下在一個測試裡,以不同的狀態把其它測試方法跑一遍。
// alternate what setup done // full tests in alternated state NSArray * tests = [FileLibraryTests testInvocations]; for (NSInvocation * inv in tests ) { NSString * sel = NSStringFromSelector(inv.selector); if (![sel containsString:@"WithInit"] && ![sel containsString:@"Monitoring"]) { [inv invokeWithTarget:self]; } } //back to normal state
另外,Xcode 6 已經加上了 XCTestExpetation,以後用不著:
#import <XCTest/XCTestCase+AsynchronousTesting.h> dispatch_semaphore_t sema = dispatch_semaphore_create(0); dispatch_after(dispatch_time(0, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ ... dispatch_semaphore_signal(sema); ... } ); dispatch_semaphore_wait(sema, dispatch_time(DISPATCH_TIME_NOW, 30*NSEC_PER_SEC));
直接寫
XCTestExpectation *expectation = [self expectationWithDescription:@"xxx"]; // invoke it in code async executing ... ^(){ [expectation fulfill]; } ... [self waitForExpectationsWithTimeout:1 handler:^(NSError *error) { // cleanup. }];
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。