[Swift]parameterized test with Swift

When we describe test cases with similar parameters, we do parameterized test . In Swift, I can’t find library to do it.

So, I consider how to do parameterized test with Swift.
Here is a sample for it.


import XCTest
class xctestSampleTests: XCTestCase {
// define for parameterized test
struct ParameterizedStruct {
var (one, two, expected): (Int, Int, Int)
}
func parameterized(params: [ParameterizedStruct], _ block: (ParameterizedStruct) -> Void) {
for param in params {
block(param);
}
}
func testParameterizedTesting() {
// define parameters
let data: [ParameterizedStruct] = [
ParameterizedStruct(one: 1, two: 2, expected: expectedMethod()),
ParameterizedStruct(one: 3, two: EnumSample.Zero.rawValue, expected: 3)
]
// Set test case as block case
parameterized(data, {
(paramStruct) in
// describe test cases
let item: Int? = paramStruct.one + paramStruct.two
XCTAssert(item == paramStruct.expected)
})
}
// Method which is used in parameters
func expectedMethod() -> Int {
return 3
}
// Enum which is used in parameters
enum EnumSample: Int {
case Zero, One, Two, Three
}
}

In Elixir case, we can do it with…

defmodule MyExampleTest do
  use ExUnit.Case, async: true
  use ExUnit.Parameterized        # Required

  test_with_params "add params",  # description
    fn (a, b, expected) ->        # test case
      assert a + b == expected
    end do
      [
        {1, 2, 3},                 # parameters
        "description": {1, 4, 5},  # parameters with description
      ]
  end
end

https://github.com/KazuCocoa/ex_parameterized

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.