www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

iOS测验与集成工具总括,二零一四年iOS测验现状

2019-08-16 08:16 来源:未知

二零一五年iOS测验现状,二零一六年ios现状

本文由 伯乐在线 - nathanw 翻译,dopcn 校稿。未经许可,禁止转发! 葡萄牙共和国(República Portuguesa)语出处:www.mokacoding.com。迎接插手翻译小组。

几周前,笔者决定将将小编在 mokacoding 上的作品越来越多聚集在单元测验与验收测验,自动化和生育效能上,首要在iOS领域。

连带深刻文章可以看看“通过 CocoaPods 为 iOS 项目开创 Calabash 并创设配置”和“用极端运转 Xcode 测量检验”。

上周我们要回过头来看看,可能说是站在更加高的角度审视单元测量试验和验收测量试验,以及在云端运维持续集成有哪些能源。

就如有人创设 walking skeleton 时会做的专业同样,大家也将先查看 Cocoa 和 Xcode 提须要开采者的工具,然后再看看能兑现更加好成效的开源库,最终整理出在云端持续集成意况运营测量检验的消除方案。

本文由 伯乐在线 - nathanw 翻译,dopcn 校稿。未经许可,禁止转载! 保扩展特Mond语出处:www.mokacoding.com。迎接参与翻译小组。

Giovanni Lodi是发源澳大太原(Australia)的一名iOS开垦者,近来她总结了iOS平台上单元测量检验、验收测验的工具,深入分析了它们的得失,以及支持iOS App的穿梭集成平台。

Xcode,测验开始的地点

陪伴着 iOS 7 和 Xcode 5,苹果发布了 XCTest,五个轻松易行而又有力的测试编写框架,使用了同 xUnit 同样的作风。

编排 XCTest 测量试验很简短,开荒者在 Xcode 点击 ⌘U 运转测验便能循环不断不断地急忙获得反馈。

Xcode 还只怕有二个叫“Test Navigator”的分界面,它能够让大家看来所有测量试验点,包括在最后贰遍运营后的打响或倒闭状态。

新京葡娱乐场网址 1

值得注意的是,原野绿为测验失利,灰湖绿为测量试验通过。在随地随时迭代进程中颜色会给您十分的大帮扶。

XCTest 已经高度集成在 Xcode 中,使用简便方便。这是它至关心尊崇要优点,也是欠缺。XCTAssert 类 API 并不易于掌握,也不灵活。从 Xcode 外边运维测量试验也尚无你想象的那么粗略。

在过去四年中,iOS 和 OS X 的单元测量试验框架已经变得进一步好,而验收测量试验那边反而没什么进步。

苹果提供了 UIAutomation 框架来编排 UI 自动化测量试验。UIAutomation 测验使用 javascript 写成。允许用户使用代码驱动应用 UI 并给它的情事设置断言。纵然看起来很好看好,使用 UIAutomation 其实是很麻烦的, javascript API 也从没原生代码写成的单元测验那样强大。

那是 UIAutomation 测量检验的叁个小部分。

1 2 3 4 5 UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();   UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Chocolate Cake"];   UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].scrollToElementWithPredicate("name beginswith 'Turtle Pie'");

你能够看看的,javascript API 比 Foundation 中的那多少个进一步冗长。再加上这种测量检验须求在 Instruments 中运营,你就能够想象使用这些框架是多么的极慢。

聊到底是苹果的 CI 化解方案:Xcode Bots。大家能够配备多少个 Xcode Bot,在急需的时候接触他干活,举例运转我们的测验,Xcode Bots 能够贮存在服务器端。

自己认可小编要好并从未用过 Xcode Bots,可是自个儿获取的有着报告都告知本身这么些事物并不好用。

计算下,近日缺少好奇心的开垦者和大商家,能够只使用苹果的技巧,创设一整套运营在CI的单元测量试验和验收测验。用于事业多数是十足了。

比如您正在阅读本文,你只怕充满了好奇心,那么让大家继承看看开源社区有那些能源。

几周前,小编主宰将将小编在 mokacoding 上的写作更加多集中在单元测量检验与验收测量检验,自动化和生产效用上,首要在iOS领域。

苹果官方工具

开源单元测量检验框架

iOS 和 OS X 开源社区充满了各类大咖轻有意思的花色。在写本文的时候,在 pod 上一齐有 8625 个开源项目。

那几个单元测量检验的开源库主要都以表现描述风格(xSpec),一定水平上也反映了测验风格的一种趋势,那品格来自于 Ruby 测量试验库的 ENCORESpec, 主即便测量试验类的一坐一起,实际不是枚举方法。

连带浓厚小说可以看看“经过 CocoaPods 为 iOS 项目创建 Calabash 并创设配置”和“用极端运行Xcode 测量试验”。

XCTest是苹果在iOS 7和Xcode5引进的二个简易而有力的测量试验框架,它的测量检验编写起来特别轻易,况兼根据xUnit作风。XCTest的亮点是与Xcode深度集成,有特别的Test导航栏,但因为受限于官方测验API,由此效能不是很充裕。

Kiwi

Kiwi 是叁个全栈式的,XCTest的替代品,帮助作为描述句式。实例代码如下

1 2 3 4 5 6 7 8 9 10 11 12 13 describe(@"Team", ^{   context(@"when newly created", ^{     it(@"has a name", ^{       id team = [Team team];       [[team.name should] equal:@"Black Hawks"];     });       it(@"has 11 players", ^{       id team = [Team team];       [[[team should] have:11] players];     });   }); });

Kiwi 测量试验用例平常特别轻巧阅读和清楚代码所想要测量试验的剧情,他仿佛一个好的求证文书档案。

Kiwi 集成了有个别测量试验方法 期望(expectations), 模拟目的 (mock),桩程序 (stub),以致还帮助异步测验。

下周大家要回过头来看看,或然说是站在越来越高的角度审视单元测量试验和验收测验,以及在云端运维持续集成有啥样财富。

UIAutomation是苹果提供的UI自动化测验框架。测验使用Javascript编写,不过选用起来有个别单调。

Specta

Specter 跟 Kiwi 特别像,不过它接纳了不一样的架构。Kiwi 是十分的大的代表品 ,Specta 优势则浮以往模块化与组件化。那么些库关注的并世无两事情是编写制定和平运动作 xSpec 风格的测量检验,然后用户能够依靠使用期望(expectations), 相称(matching),模拟指标(mock)和桩程序(stub)的意况来补偿相应模块。

自己个人更欣赏这些库的宏图,轻量级,富含的三个模块能够被重组在协同。

那是 Specta 行为描述

1 2 3 4 5 6 7 8 9 10 11 12 13 14 SpecBegin(Thing)   describe(@"Thing", ^{   it(@"should do stuff", ^{     // This is an example block. Place your assertions here.   });     it(@"should do some stuff asynchronously", ^{     waitUntil(^(DoneCallback done) {       // Async example blocks need to invoke done() callback.       done();     });   }); });

小心 it 实践的时候 blocks 是空的。留给库的使用者来用他们心爱的工具填写。

聊起工具,这里有多个库名单,他们都足以与 Specta 和 Kiwi 合作使用:

  • Expecta a matcher framework, expect(foo).to.equal(bar).
  • OCHamcrest another matcher framework, assertThat(foo, equalTo(bar)).
  • OCMock a mocking framework.
  • OCMockito another mocking framework.
  • OHTTPStubs a library to stub network requests, with block based syntax to match URLs.
  • Nocilla another library to stub network requests, with a nice chain-able API, stubRequest(@”POST”, ).withHeaders(…).withBody(…).

就疑似有人成立 walking skeleton 时会做的作业一样,大家也将先查看 Cocoa 和 Xcode 提须要开采者的工具,然后再看看能兑现更加好效果与利益的开源库,最终整理出在云端持续集成碰着运转测量试验的化解方案。

苹果对屡次集成的支撑,则呈将来Xcode Bots上。大家能配置Xcode Bots来设置触发器,来替大家运转测量试验或自行将代码上传到服务器上。

Quick

Quick 是二个新的测验框架,也卓绝炫丽的二个。首要代码都是用 Swift 写的,特别适合用新的言语写测量试验组件。

1 2 3 4 5 6 7 8 9 10 11 import Quick   class ThingSpec: QuickSpec {   override func spec() {     describe("a 'Thing'") {       it("should do stuff) {         //       }     }   } }

幸而了 Swift 的语法和闭包,Quick 的一言一动描述看起来比 Kiwi 和 Specta 的可读性更加强。

和 Qucik 一同的 Nimble 是一个 matcher 库,它同意用户进行简短地表达,比如 expect(10) > 2

任由 Objective-C 照旧Switf,单个庞大框架恐怕你心爱的库组成的零件,开源社区提供了大气有价值的测量试验框架,特别是小心于写简洁测验的,感激有发挥句法(expressive syntax)。

Xcode,测量试验开头的地点

陪同着 iOS 7 和 Xcode 5,苹果宣布了 XCTest,八个归纳而又有力的测验编写框架,使用了同 xUnit 同样的风格。

编纂 XCTest 测量检验相当的粗略,开辟者在 Xcode 点击 ⌘U 运营测验便能不断不断地火速赢得反馈。

Xcode 还应该有一个叫“Test Navigator”的界面,它能够让大家看看有着测量检验点,满含在最终叁回运转后的功成名就或战败状态。

新京葡娱乐场网址 2

值得注意的是,白灰为测量试验失败,大青为测量检验通过。在相连迭代进度中颜色会给您极大支持。

XCTest 已经冲天集成在 Xcode 中,使用简单方便。那是它首要优点,也是顽固的病痛。XCTAssert 类 API 并不轻巧精晓,也不灵敏。从 Xcode 外边运营测量检验也从不您想像的那么粗略。

在过去五年中,iOS 和 OS X 的单元测量试验框架已经变得进一步好,而验收测验那边反而没什么升高。

苹果提供了 UIAutomation 框架来编排 UI 自动化测验。UIAutomation 测验使用 javascript 写成。允许用户使用代码驱动应用 UI 并给它的气象设置断言。就算看起来极好看好,使用 UIAutomation 其实是很麻烦的, javascript API 也并未有原生代码写成的单元测验那样庞大。

这是 UIAutomation 测量试验的八个小一些。

1
2
3
4
5
UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();
 
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Chocolate Cake"];
 
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].scrollToElementWithPredicate("name beginswith 'Turtle Pie'");

你能够见见的,javascript API 比 Foundation 中的这一个进一步冗长。再增加这种测验须求在 Instruments 中运营,你就足以想像使用那些框架是何其的不适。

说起底是苹果的 CI 化解方案:Xcode Bots。大家能够配备叁个Xcode Bot,在急需的时候接触他干活,举例运营我们的测量试验,Xcode Bots 能够贮存在劳务器端。

本人承认本人要好并未用过 Xcode Bots,然而自身获取的保有反映都告知小编这几个事物并不佳用。

小结下,前段时间缺少好奇心的开拓者和大厂家,能够只利用苹果的手艺,建立一整套周转在CI的单元测验和验收测验。用于专门的职业多数是十足了。

倘让你正在读书本文,你也许充满了好奇心,那么让我们承继看看开源社区有这一个能源。

单元测验的开源库

验收测量检验的开源库

苹果提供的法定工具中单元测试框架和验收测量检验框架的质量比较也反馈在开源社区中。可能是因为 XCTest 为开源单元测验框架们提供了三个牢固的底子,而 UIAutomation 未有,所以大家只可以选用部分特别的主意。

开源单元测量试验框架

iOS 和 OS X 开源社区充满了各类大腕和有意思的项目。在写本文的时候,在 pod 上海市总共有 8625 个开源项目。

这几个单元测量检验的开源库首要都是展现描述风格(xSpec),一定水平上也反映了测量试验风格的一种侧向,那品格来自于 Ruby 测量检验库的 RSpec, 主要是测量检验类的行事,并不是枚举方法。

在开源社区里,我们对新东西邻受得神速,一些好的东西也时常病毒性的扩散。iOS开源社区也是如此,譬如,它的测量检验编写趋势是选择xSpec风格,那是从Ruby测量检验库RSpec新京葡娱乐场网址,以史为鉴而来的。

KIF

KIF,保持函数式(Keep It Functional),那是一个用 Objective-C 写的框架,让大家运用 XCTest 编写验收测量试验,然后在 Xcode 运转,情势和我们在单元测量检验做的一样。

KIF 使用民用的 API 来获得视图层级,然后让大家运用 accessibility 标签值来视图查询与相互。

1 2 3 4 5 6 7 8 - (void)testSuccessfulLogin {   [tester enterText:@"[email protected]" intoViewWithAccessibilityLabel:@"Login User Name"];   [tester enterText:@"thisismypassword" intoViewWithAccessibilityLabel:@"Login Password"];   [tester tapViewWithAccessibilityLabel:@"Log In"];     // Verify that the login succeeded   [tester waitForTappableViewWithAccessibilityLabel:@"Welcome"]; }

KIF相比倒霉的地方在于作者响应时间异常的慢。这不是批判,究竟开源世界一切都是无偿的,但我们都要赚钱糊口,能够领略作者用在这个类别上的小运是少数的。可是当一切框架的基本功都特别难以使用,那么她的稳固性一定非常低。

Kiwi

Kiwi 是三个全栈式的,XCTest的取代品,援助作为描述句式。实例代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
describe(@"Team", ^{
  context(@"when newly created", ^{
    it(@"has a name", ^{
      id team = [Team team];
      [[team.name should] equal:@"Black Hawks"];
    });
 
    it(@"has 11 players", ^{
      id team = [Team team];
      [[[team should] have:11] players];
    });
  });
});

Kiwi 测量检验用例常常特别轻便阅读和领会代码所想要测量试验的原委,他就像是一个好的表明文书档案。

Kiwi 集成了一部分测量试验方法 期望(expectations), 模拟目的(mock),桩程序 (stub),以至还协理异步测验。

Kiwi是对XCTest的叁个整机替代,使用xSpec风格编写测验。Kiwi带有自个儿的一套工具集,富含expectations、mocks、stubs,乃至还补助异步测量检验。

Subliminal

Subliminal 是叁个看似 KIF 的 Objective-C 框架,集成了 XCTest。和 KIF 差异的是,SUbliminal 是写在 UIAutomation 上层,目的在于为开荒者隐蔽它的头眼昏花。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - (void)testLogInSucceedsWithUsernameAndPassword {   SLTextField *usernameField = [SLTextField elementWithAccessibilityLabel:@"username field"];   SLTextField *passwordField = [SLTextField elementWithAccessibilityLabel:@"password field" isSecure:YES];   SLElement *submitButton = [SLElement elementWithAccessibilityLabel:@"Submit"];   SLElement *loginSpinner = [SLElement elementWithAccessibilityLabel:@"Logging in..."];     NSString *username = @"Jeff", *password = @"foo";   [usernameField setText:username];   [passwordField setText:password];     [submitButton tap];     // wait for the login spinner to disappear   SLAssertTrueWithTimeout([loginSpinner isInvalidOrInvisible], 3.0, @"Log-in was not successful.");     NSString *successMessage = [NSString stringWithFormat:@"Hello, %@!", username];   SLAssertTrue([[SLElement elementWithAccessibilityLabel:successMessage] isValid],   @"Log-in did not succeed.");     // Check the internal state of the app.   SLAssertTrue(SLAskAppYesNo(isUserLoggedIn), @"User is not logged in.") }

Subliminal 证明它能够测量检验应用内购警告,乃至能使 app 走入梦眠。那听上去很牛,但实际情状是,在本身写本文的时候,该库如今的贰回代码提交是 2015年3月,何况还也会有 13 活跃的 pull request,那个都是不佳的功率信号。

Specta

Specter 跟 Kiwi 非常像,可是它接纳了不一样的架构。Kiwi 是宏大的代表品 ,Specta 优势则反映在模块化与组件化。这一个库关怀的独一事情是编写和平运动转 xSpec 风格的测量试验,然后用户能够依附使用期望(expectations), 相称(matching),模拟目的(mock)和桩程序(stub)的场馆来补充相应模块。

笔者个人更爱好那么些库的陈设,轻量级,富含的多少个模块能够被重组在一块儿。

那是 Specta 行为描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SpecBegin(Thing)
 
describe(@"Thing", ^{
  it(@"should do stuff", ^{
    // This is an example block. Place your assertions here.
  });
 
  it(@"should do some stuff asynchronously", ^{
    waitUntil(^(DoneCallback done) {
      // Async example blocks need to invoke done() callback.
      done();
    });
  });
});

在意 it 施行的时候 blocks 是空的。留给库的使用者来用他们爱怜的工具填写。

提及工具,这里有三个库名单,他们都足以与 Specta 和 Kiwi 协作使用:

  • Expecta a matcher framework, expect(foo).to.equal(bar).
  • OCHamcrest another matcher framework, assertThat(foo, equalTo(bar)).
  • OCMock a mocking framework.
  • OCMockito another mocking framework.
  • OHTTPStubs a library to stub network requests, with block based syntax to match URLs.
  • Nocilla another library to stub network requests, with a nice chain-able API, stubRequest(@”POST”, ).withHeaders(…).withBody(…).

Specta与Kiwi功效相似,但在架设上相当例外。Kiwi重视效果的咬合,而Specta则注重模块化。它自身只注意于运作测量试验,而将效仿、匹配等功能交由第三方。下边那个片段开源测量检验组件,它们能与Specta和Kiwi框架搭配使用:

Calabash

当下我们所谈起的工具中,Calabash 是最原始的三个。它是四个 Ruby 包,使用 Cucumber 编写 BDD 风格的验收测量检验,未来由 Xamarin 维护。Xamarin 是三个用 C# 写 iOS 和 Android 应用的框架。语言会不会略微多!

不像 KIF 和 Subliminal,Calabash 完全不合併在 Xcode 中。笔者创设示范使用的是 Vim 和 Rake。

我们书写 Cucumber 脾性,实施每一步,然后选择命令行测量检验。为了它亦可职业,必要在动用内放置八个HTTP 服务器,用于查询和驱动 UI。

绝不说,那恐怕是一个很万宜水库。

Cucumber/Calabash 测量试验代码大约是那样:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # rating_a_stand.feature   Feature: Rating a stand   Scenario: Find and rate a stand from the list     Given I am on the foodstand list     Then I should see a "rating" button     And I should not see "Dixie Burger & Gumbo Soup"   # steps.rb   Given(/^I am on the foodstand list$/) do   wait_for_element_exists "view marked:'Foodstand'" end   Given(/^I should see a "([^"]*)" button$/) do |button_title|   wait_for_element_exists "button marked:'#{button_title}'" end   Given(/^I should not see "([^"]*)"$/) do |view_label|   wait_for_element_does_not_exists "view marked:'#{view_label}' end

Calabash 好的地点在于它是一种陈述式的测量检验,管理层会欣赏倘若她们会读到那几个测验的话。何况它能够相配多少个阳台。

一边,工具链实际不是特别强劲。测量检验运营绝对非常慢,须要在 Cucumer,Ruby,Objective 之间持续交流,消耗比较多的时光。

就疑似单元测量检验,开源库提供了分化的选项,用于改正你的专门的学问流。独一不相同的是那几个工具没那么成熟,社区没那么活跃。

Quick

Quick 是一个新的测量检验框架,也异常绚烂的三个。首要代码都以用 斯威夫特 写的,特别适合用新的语言写测量试验组件。

1
2
3
4
5
6
7
8
9
10
11
import Quick
 
class ThingSpec: QuickSpec {
  override func spec() {
    describe("a 'Thing'") {
      it("should do stuff) {
        //
      }
    }
  }
}

幸好了 Swift 的语法和闭包,Quick 的一颦一笑描述看起来比 Kiwi 和 Specta 的可读性越来越强。

和 Qucik 一起的 Nimble 是一个 matcher 库,它同意用户举办简短地表达,举个例子 expect(10) > 2

不论 Objective-C 照旧Switf,单个庞大框架大概你心爱的库组成的零件,开源社区提供了汪洋有价值的测量检验框架,非常是小心于写简洁测量检验的,谢谢有表明句法(expressive syntax)。

Expecta:相称程序框架。

一再集成平台

为大家的类型套上好的测验工具,其最后一步是负有持续集成。在开拓者机器上运行测量试验并无法担保代码不会出错,毕竟其余组织成员会对代码实行改动。有个人来不断运转测量试验会愈发安全。

并不是说,最佳的 CI 是在云端进行。配置维护一套 Jenkins 须要大批量的大运。

CI 的选项会更加的多。这里列出有个别支撑 iOS 项目标主要 CI 服务。

  • Travis CI
  • Ship.io
  • Sauce Labs
  • Bitrise
  • Testdroid

它们之间的差异重如果在价格,上手轻便程度,以及怎么着安顿。比如 Travis CI 使用 .travis.yml文件定义全体的步子,而 Bitrise 则图形分界面,每一个步骤都用 block 展示,而且这block可以被增加到进度。

地点这几个列表恐怕并不周密,小编只怕落了一部分。希望以此对于风野趣写测量检验和 CI 的人是八个好的初叶。

本文由 伯乐在线

  • nathanw 翻译,dopcn 校稿。未经许可,禁止转发! 土耳其语出处:www.mokacoding.com。迎接参预翻译...

验收测量试验的开源库

苹果提供的官方工具中单元测量检验框架和验收测量检验框架的材质相比较也反馈在开源社区中。或然是因为 XCTest 为开源单元测验框架们提供了三个稳固的基础,而 UIAutomation 没有,所以大家只能选用一些异样的格局。

OCHamcrest:相称程序框架。

KIF

KIF,保持函数式(Keep It Functional),这是三个用 Objective-C 写的框架,让咱们选取 XCTest 编写验收测量试验,然后在 Xcode 运转,方式和我们在单元测量检验做的同等。

KIF 使用个人的 API 来获得视图层级,然后让大家选用 accessibility 标签值来视图查询与相互。

1
2
3
4
5
6
7
8
- (void)testSuccessfulLogin {
  [tester enterText:@"user@example.com" intoViewWithAccessibilityLabel:@"Login User Name"];
  [tester enterText:@"thisismypassword" intoViewWithAccessibilityLabel:@"Login Password"];
  [tester tapViewWithAccessibilityLabel:@"Log In"];
 
  // Verify that the login succeeded
  [tester waitForTappableViewWithAccessibilityLabel:@"Welcome"];
}

KIF比较不佳的地点在于小编响应时间相当的慢。那不是批判,毕竟开源世界一切皆避防费的,但我们都要赢利糊口,能够知道小编用在这么些品种上的小时是轻松的。可是当一切框架的底子都非常难以使用,那么她的稳固性一定极低。

OCMock:模拟测量试验框架。

Subliminal

Subliminal 是二个看似 KIF 的 Objective-C 框架,集成了 XCTest。和 KIF 分歧的是,SUbliminal 是写在 UIAutomation 上层,目的在于为开采者隐敝它的纷纷。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (void)testLogInSucceedsWithUsernameAndPassword {
  SLTextField *usernameField = [SLTextField elementWithAccessibilityLabel:@"username field"];
  SLTextField *passwordField = [SLTextField elementWithAccessibilityLabel:@"password field" isSecure:YES];
  SLElement *submitButton = [SLElement elementWithAccessibilityLabel:@"Submit"];
  SLElement *loginSpinner = [SLElement elementWithAccessibilityLabel:@"Logging in..."];
 
  NSString *username = @"Jeff", *password = @"foo";
  [usernameField setText:username];
  [passwordField setText:password];
 
  [submitButton tap];
 
  // wait for the login spinner to disappear
  SLAssertTrueWithTimeout([loginSpinner isInvalidOrInvisible], 3.0, @"Log-in was not successful.");
 
  NSString *successMessage = [NSString stringWithFormat:@"Hello, %@!", username];
  SLAssertTrue([[SLElement elementWithAccessibilityLabel:successMessage] isValid],
  @"Log-in did not succeed.");
 
  // Check the internal state of the app.
  SLAssertTrue(SLAskAppYesNo(isUserLoggedIn), @"User is not logged in.")
}

Subliminal 注解它可以测验应用内购警告,乃至能使 app 步入梦眠。那听上去很牛,但事实是,在自己写本文的时候,该库近来的一遍代码提交是 贰零壹伍年1月,并且还会有 13 活跃的 pull request,这么些都是不佳的时限信号。

OCMockito:模拟测验框架。

Calabash

此时此刻大家所说起的工具中,Calabash 是最原始的二个。它是贰个 Ruby 包,使用 Cucumber 编写 BDD 风格的验收测验,今后由 Xamarin 维护。Xamarin 是多个用 C# 写 iOS 和 Android 应用的框架。语言会不会略微多!

不像 KIF 和 Subliminal,Calabash 完全不合併在 Xcode 中。小编创制示范使用的是 Vim 和 Rake。

咱俩书写 Cucumber 性子,试行每一步,然后利用命令行测验。为了它亦可专业,要求在行使内放置一个HTTP 服务器,用于查询和驱动 UI。

毫不说,那恐怕是二个十分的大网仔。

Cucumber/Calabash 测量试验代码大概是那样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# rating_a_stand.feature
 
Feature: Rating a stand
  Scenario: Find and rate a stand from the list
    Given I am on the foodstand list
    Then I should see a "rating" button
    And I should not see "Dixie Burger & Gumbo Soup"
 
# steps.rb
 
Given(/^I am on the foodstand list$/) do
  wait_for_element_exists "view marked:'Foodstand'"
end
 
Given(/^I should see a "([^"]*)" button$/) do |button_title|
  wait_for_element_exists "button marked:'#{button_title}'"
end
 
Given(/^I should not see "([^"]*)"$/) do |view_label|
  wait_for_element_does_not_exists "view marked:'#{view_label}'
end

Calabash 好的地点在于它是一种陈诉式的测验,管理层会喜欢假设她们会读到那一个测验的话。何况它能够相配八个阳台。

一边,工具链并不是极其强劲。测验运营相对一点也不快,须要在 Cucumer,Ruby,Objective 之间持续调换,消耗一定多的年月。

仿佛单元测量试验,开源库提供了差别的选择,用于改革你的职业流。独一区别的是那些工具没那么成熟,社区没那么活跃。

OHTTPStubs:模拟网络央求的库,基于block的语法来相称UMuranoL。

持续集成平台

为我们的门类套上好的测量检验工具,其末了一步是具有不停集成。在开辟者机器上运维测量检验并不可能担保代码不会出错,终究其余组织成员会对代码进行改换。有私人民居房来不断运转测量检验会更加的安全。

永不说,最佳的 CI 是在云端举行。配置维护一套 Jenkins 必要大批量的时日。

CI 的抉择会越来越多。这里列出一部分支撑 iOS 项指标重中之重 CI 服务。

  • Travis CI
  • Ship.io
  • Sauce Labs
  • Bitrise
  • Testdroid

它们中间的分别首借使在标价,上手轻松程度,以及哪些安顿。譬如 Travis CI 使用 .travis.yml文本定义全数的手续,而 Bitrise 则图形分界面,每种步骤都用 block 显示,並且那block能够被增多到进程。

上面这些列表也许并不完善,作者大概落了有的。希望那个对于有意思味写测量检验和 CI 的人是叁个好的最先。

Nocilla:模拟互连网央求的库,使用链式API。

Quick是多少个用到Swift开垦的新测量试验框架,对测量检验使用Swift编写的App极其要好。它还或然有一个Nimble库用于编写相称形式。

验收测量检验的开源库

KIF(Keep It Functional)是用Objective-C编写的用户界面测验框架。KIF tester使用了私有API来驾驭App中的视图层级。劣点是运作不快。

Subliminal是另一款与XCTest集成的框架。与KIF区别的是,它基于UIAutomation编写,目的在于对开采者掩饰UIAutomation中部分繁杂的内情。可是它聊到底更新日期是二零一四年八月,或然已偃旗息鼓更新。

Calabash是跨平台开垦工具Xamarin推出的一款测验工具。它接纳BDD风格来编排验收测验。它的帮助和益处是永葆跨平台(需接纳不一致的库),证明式的测量试验风格十分便于读写。瑕玷是缺乏稳固何况运维速度慢。

不停集成平台

此地列出的接踵而至 蜂拥而至集成工具都是基于云平台的,因为本身搭建类似Jenkins像这种类型的不唯有集成景况代价高昂。

下边包车型的士列表是当下补助iOS的主流CI平台。

Travis CI

Ship.io

Sauce Labs

Bitrise

Testdroid

它们间的两样在于价格、配置职业,以及右臂难易程度。

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于新京葡娱乐场网址,转载请注明出处:iOS测验与集成工具总括,二零一四年iOS测验现状