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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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