Xcode中的XCTest和异步测试

Dim*_*ian 40 xcode ios xctest

所以Apple在Xcode 6的发行说明中说我们现在可以直接使用XCTest进行异步测试.

任何人都知道如何使用Xcode 6 Beta 3(使用Objective-C或Swift)?我不想要已知的信号量方法,而是新的Apple方式.

我搜索了发布的笔记和更多,但我一无所获.XCTest标头也不是非常明确.

jon*_*uer 65

Obj-C示例:

- (void)testAsyncMethod
{

    //Expectation
    XCTestExpectation *expectation = [self expectationWithDescription:@"Testing Async Method Works!"];

    [MyClass asyncMethodWithCompletionBlock:^(NSError *error, NSHTTPURLResponse *httpResponse, NSData *data) {

        if(error)
        {
            NSLog(@"error is: %@", error);
        }else{
            NSInteger statusCode = [httpResponse statusCode];
            XCTAssertEqual(statusCode, 200);
            [expectation fulfill];
        }

    }];


    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError *error) {

        if(error)
        {
            XCTFail(@"Expectation Failed with error: %@", error);
        }

    }];
}
Run Code Online (Sandbox Code Playgroud)

  • 愚蠢的问题:如果我的`asyncMethod`没有完成块怎么办?我不知道如何测试这个. (5认同)

Dim*_*ian 52

会话视频是完美的,基本上你想做这样的事情

func testFetchNews() {
    let expectation = self.expectationWithDescription("fetch posts")

    Post.fetch(.Top, completion: {(posts: [Post]!, error: Fetcher.ResponseError!) in
        XCTAssert(true, "Pass")
        expectation.fulfill()
    })

    self.waitForExpectationsWithTimeout(5.0, handler: nil)
}
Run Code Online (Sandbox Code Playgroud)


mit*_*ens 11

会话414涵盖了Xcode6中的异步测试

https://developer.apple.com/videos/wwdc/2014/#414