XCTest tips and XCTest tips
Tips for XCTest
I tried to run other test methods in different States in a test.
// 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
In addition, XCTestExpetation has been added to Xcode 6 and is not needed in the future:
#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));
Write directly
XCTestExpectation *expectation = [self expectationWithDescription:@"xxx"]; // invoke it in code async executing ... ^(){ [expectation fulfill]; } ... [self waitForExpectationsWithTimeout:1 handler:^(NSError *error) { // cleanup. }];
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.