相关疑难解决方法(0)

iOS测试/规格TDD/BDD以及集成和验收测试

在iPhone上用于行为驱动开发的最佳技术是什么?什么是一些开源示例项目,证明了这些技术的合理使用?以下是我发现的一些选项:


单元测试

测试::单位样式

  1. OCUnit/SenTestingKit,iOS开发指南:单元测试应用程序和其他OCUnit参考中所述.
  2. 抓住
  3. GHUnit
  4. Google Toolbox for Mac:iPhone单元测试

RSpec风格

  1. 新西兰(也有嘲弄和期望)
  2. 雪松
  3. 带有UI自动化的Jasmine,如灵巧的'iOS验收测试规范所示

验收测试

风格

  1. UI自动化(适用于设备)

    更新:Zucchini框架似乎融合了Cucumber和UI Automation!:)

    旧博客帖子:

  2. UISpecUISpecRunner

  3. FoneMonkey

黄瓜风格

  1. 弗兰克iCuke(基于黄瓜会见iPhone谈话)

iphone rspec cucumber ios ios-ui-automation

229
推荐指数
3
解决办法
4万
查看次数

如何对异步API进行单元测试?

我已将Google Toolbox for Mac安装到Xcode中,并按照说明在此处设置单元测试.

这一切都很好,我可以在我的所有对象上测试我的同步方法.但是,我实际想要测试的大多数复杂API通过调用委托上的方法异步返回结果 - 例如,对文件下载和更新系统的调用将立即返回,然后在文件完成下载时运行-fileDownloadDidComplete:方法.

我如何将其作为单元测试进行测试?

好像我想要testDownload函数,或者至少要测试框架'等待'fileDownloadDidComplete:方法来运行.

编辑:我现在已经切换到使用XCode内置XCTest系统,并发现Github 上的TVRSMonitor提供了一种简单的方法来使用信号量等待异步操作完成.

例如:

- (void)testLogin {
  TRVSMonitor *monitor = [TRVSMonitor monitor];
  __block NSString *theToken;

  [[Server instance] loginWithUsername:@"foo" password:@"bar"
                               success:^(NSString *token) {
                                   theToken = token;
                                   [monitor signal];
                               }

                               failure:^(NSError *error) {
                                   [monitor signal];
                               }];

  [monitor wait];

  XCTAssert(theToken, @"Getting token");
}
Run Code Online (Sandbox Code Playgroud)

iphone unit-testing asynchronous google-toolbox-for-mac

64
推荐指数
7
解决办法
3万
查看次数

使用OCunit在iOS上测试异步代码

有没有人知道任何允许使用OCUnit测试异步代码的现有库?我正在考虑类似GHAsyncTestCase但是从中传递的东西SenTestCase.

我问,因为如果我找不到任何我将要移植GHAsyncTestCase到OCUnit,但我不想复制其他人已完成的工作.

iphone objective-c ios

7
推荐指数
2
解决办法
4139
查看次数

延迟OCMock验证/处理单元测试中的超时

我正在使用OCMock测试真实的Web服务调用.

现在我做的事情如下:

- (void)testWebservice
{
    id mydelegatemock = [OCMockObject mockForProtocol:@protocol(MySUTDelegate)];
    [[mydelegatemock expect] someMethod:[OCMArg any]];

    [SUT sutWithDelegate:mydelegatemock];

    // we need to wait for real result
    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];

    [(OCMockObject*)mydelegatemock verify];
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它暗示每个这样的测试将需要2秒.

有没有一种方法我可以设置例如,2秒的超时,并让一个呼叫someMethodmydelegatemock立即verify和完成测试案例?

unit-testing asynchronous timeout ocmock ios

6
推荐指数
1
解决办法
2832
查看次数