XCTestAsync 1.0

XCTestAsync 1.0

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Dec 2014

Maintained by Unclaimed.



  • By
  • James Hu

XCTestAsync is an extension to XCTest for asynchronous testing, and is based on SenTestingKitAsync.

Installation

There are currently two ways to add XCTestAsync to your project:

  • Install with CocoaPods (recommended)
  • Manually copying the source files

Manually

If you are not using CocoaPods, you can copy over XCTestAsync.h and XCTestAsync.m into your test target. In addition, you will need to add -ObjC to your test target linker flags.

Usage

To use XCTestAsync in your tests, do the following:

  1. Import the header:

    #import <XCTestAsync/XCTestAsync.h>
  2. Add your test method that ends with the suffix Async:

    - (void)testMethodAsync
    {
        // your async code here
    }
  3. Tell XCTestAsync when the test succeeds:

    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^{
        XCAsyncSuccess();
    });

Once your async tests start, XCTestAsync will wait until either a failure occurs (by calling assertions such as XCTFail(…) or XCTAssert(…)) or a success is signalled (by calling XCAsyncSuccess()). If neither of these happen, XCTestAsync will wait indefinitely.

Timeouts

If you expect your async test to run within a specified amount of time, you can specify a time limit by calling XCAsyncFailAfter(timeout, description, …). If a success is not signalled within the time limit, the test will fail after timeout number of seconds.

Additional Reading