Skip to content

alimyuz/TestCaseKit

Repository files navigation

TestCaseKit

TestCaseKit is a Swift Macro that lets you create test cases with arguments, without needing to create separate tests for each set of arguments.

Example

@testCase(3, 1, 4)
@testCase(5, 3, 8)
@testCase(6, 12, 18)
func testSumNumbers(_ lhs: Int, _ rhs: Int, _ result: Int) {
  XCTAssertEqual(lhs + rhs, result)
}

@testCase("1", "1", "11")
@testCase("5", "3", "53")
@testCase("6", "12", "612")
func testConcatStrings(_ lhs: String, _ rhs: String, _ result: String) {
  XCTAssertEqual(lhs + rhs, result)
}

@testCase(nil as String?)
func testOptional(_ x: String?) {
  XCTAssertNil(x)
}

Usage

To use TestCaseKit, simply import the library into your test project and add the @testCase attribute to your test function. The @testCase attribute takes a variable number of arguments, which will be passed to the test case as arguments.

Fully integrated in Xcode

Screenshot 2023-10-26 at 22 30 00 Screenshot 2023-10-26 at 22 30 28

Installation

Step 1

To install TestCaseKit in Xcode go to your project settings, click Package Dependencies > + > Enter https://github.com/alimyuz/TestCaseKit in the search bar, add the package to your test target.

OR simply add the following dependency to your Package.swift file:

dependencies: [
  .package(url: "https://github.com/alimyuz/TestCaseKit.git", .upToNextMajor(from: "1.0.0")),
]

Step 2

After the above steps you might get a warning in Issue Navigator. You need to click Trust the Library to procceed. After this step, you are good to go!

Screenshot 2023-10-26 at 23 09 32

Note

  • Currently the external parameter name in test functions should be ommitted for the attribute to work (see Example above).
  • Do not pass nil without specifying the desired argument type.
@testCase(nil) // won't work
@testCase(nil as String?) // will work