SHTestCaseAdditions 1.4.1

SHTestCaseAdditions 1.4.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后一次发布2015年12月

Seivan Heidari维护。



  • Seivan Heidari

概述

将异步测试辅助程序作为类别添加到 SenTestCase 和 XCTestCase

  • Swizzle 无垃圾
  • 带前缀的选择器。
  • 与 SentTest (Xcode 4) 和 XCTest (Xcode 5) 兼容
  • 适用于 iOS 和 Mac OS
  • 附带测试和示例。

导航

API

使用方法

安装

默认适用于 XCTest

pod 'SHTestCaseAdditions'
pod 'SHTestCaseAdditions/XCTest'

对于 SenTestKit

pod 'SHTestCaseAdditions/SenTestKit'

设置

将此代码添加到特定文件或项目的源代码前缀文件中

XCTestCase

#import <XCTestCase+SHTestCaseAdditions.h>

SenTestKit

#import <SenTestCase+SHTestCaseAdditions.h>

或者

#import "SHTestCaseAdditions.h"

API

#pragma mark -
#pragma mark Block Definitions
typedef BOOL (^SHTestCaseConditional)();
typedef void (^SHTestCaseBlock)(BOOL *didFinish);

#pragma mark -
#pragma mark Helpers
-(void)SH_waitForTimeInterval:(NSTimeInterval)theTimeInterval;

-(void)SH_runLoopUntilTestPassesWithBlock:(SHTestCaseConditional)theBlock
                              withTimeOut:(NSTimeInterval)theTimeout;

-(void)SH_performAsyncTestsWithinBlock:(SHTestCaseBlock)theBlock
                           withTimeout:(NSTimeInterval)theTimeout;

@end

使用方法

-(void)testSH_waitForTimeInterval; {
  __block BOOL assertion = NO;

  double delayInSeconds = 5.0;
  dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
  dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    assertion = YES;
  });

  [self SH_waitForTimeInterval:delayInSeconds];
  XCTAssertTrue(assertion);
}

-(void)testSH_runLoopUntilTestPassesWithBlock_withTimeOut; {
  NSString * keyPath   = @"sampleSet";
  __block BOOL didPass = NO;

  [self SH_addObserverForKeyPaths:@[keyPath] withOptions:0 block:^(id weakSelf, NSString *keyPath, NSDictionary *change) {
    didPass = YES;
  }];

  double delayInSeconds = 2;
  dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
  dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [[self mutableArrayValueForKey:keyPath] addObject:@"Lol"];
  });


  [self SH_runLoopUntilTestPassesWithBlock:^BOOL{
    return didPass;
  } withTimeOut:5];


  XCTAssertTrue(didPass);

}

-(void)testSH_performAsyncTestsWithinBlock_withTimeout; {
  NSString * keyPath   = @"sampleArray";
  __block BOOL didPass = NO;

  [self SH_performAsyncTestsWithinBlock:^(BOOL *didFinish) {

    [self SH_addObserverForKeyPaths:@[keyPath] withOptions:0 block:^(id weakSelf, NSString *keyPath, NSDictionary *change) {
      didPass    = YES;
      *didFinish = YES;
    }];

    double delayInSeconds = 2;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
      [[self mutableArrayValueForKey:keyPath] addObject:@"Lol"];
    });

  } withTimeout:5];

  XCTAssertTrue(didPass);



}

联系方式

如果您在一个项目中使用了 SHTestCaseAdditions,我会很乐意听到您的反馈。

电子邮件:[email protected]
Twitter: @seivanheidari

许可证

SHTestCaseAdditions 版权所有© 2013 Seivan,可在MIT 许可证下免费分发。请参阅 LICENSE.md 文件。