Consiglio la combinazione Quick / Nimble. Al momento di scrivere questa risposta, Quick ha 5.796 stelle su Github e dicono che più di mille applicazioni lo stanno usando, quindi non si può sbagliare usandoli.
Quick è un framework di sviluppo behavior-driven per Swift e Objective-C, ispirato a RSpec, Specta e Ginkgo. Nimble è un framework matcher, compagno di Quick, usato per esprimere i vostri test usando un DSL molto vicino all'inglese fluente. It supports a lot of built-in matcher functions, asynchronous expectations, and the possibility of writing your own matchers.
Here you have an example of test code (taken directly from their wiki):
- // Swift
- import Quick
- import Nimble
- class TableOfContentsSpec: QuickSpec {
- override func spec() {
- describe("the 'Documentation' directory") {
- it("has everything you need to get started") {
- let sections = Directory("Documentation").sections
- expect(sections).to(contain("Organized Tests with Quick Examples and Example Groups"))
- expect(sections).to(contain("Installing Quick"))
- }
- context("if it doesn't have what you're looking for") {
- it("needs to be updated") {
- let you = You(awesome: true)
- expect{you.submittedAnIssue}.toEventually(beTruthy())
- }
- }
- }
- }
- }