测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可 | MIT |
发布上次发布 | 2014年12月 |
由 Michal Konturek 维护。
XCTestCase
的参数化实现。
参数化测试用例的基本思想是传递一组 <TestCaseData>
对象,而不是定义多个测试方法,例如:
而不是这样
- (void)test_outputForInteger_when_03_returns_fizz {
NSInteger input = 3;
assertThat([FizzBuzz outputForInteger:input], equalTo(@"Fizz"));
}
- (void)test_outputForInteger_when_05_returns_buzz {
NSInteger input = 5;
assertThat([FizzBuzz outputForInteger:input], equalTo(@"Buzz"));
}
您这样操作
+ (NSArray *)testCaseData {
return @[
[XCTestCaseData createWithInputValue:@3 withExpectedValue:@"Fizz"],
[XCTestCaseData createWithInputValue:@5 withExpectedValue:@"Buzz"],
];
}
此项目的源代码可在标准的 MIT 许可证下获取。请参阅 许可证文件。
XCParameterizedTestCase
是 XCTestCase
的子类。它包含一个测试方法,该测试方法根据提供给测试用例数据的数量执行多次。”
对于传递的每个测试用例数据,XCParameterizedTestCase
会将新的 XCTestCase
摩下水死刑成 XCTestSuite
与输入和期望值配对,这些输入和期望值由测试用例数据指定。
5 个测试用例数据的 FizzBuzz 参数化测试用例的示例输出
XCParameterizedTestCase
通过 CocoaPods 提供。
在您的 Podfile
中只需添加以下代码:
target :YourTestTarget, :exclusive => true do
pod 'XCParameterizedTestCase', '>= 0.9.0'
end
步骤 1 - 令您的测试成为 XCParameterizedTestCase 的子类
@interface FizzBuzzTests : XCParameterizedTestCase
步骤 2 - 覆盖 (NSArray *)testCaseData
方法并定义您的测试用例数据。
+ (NSArray *)testCaseData {
return @[
[XCTestCaseData createWithInputValue:@1 withExpectedValue:@"1"],
[XCTestCaseData createWithInputValue:@3 withExpectedValue:@"Fizz"],
[XCTestCaseData createWithInputValue:@5 withExpectedValue:@"Buzz"],
[XCTestCaseData createWithInputValue:@6 withExpectedValue:@"Fizz"],
[XCTestCaseData createWithInputValue:@15 withExpectedValue:@"FizzBuzz"]
];
}
步骤 3 - 使用 self.input
和 self.expected
属性实现您的测试。
- (void)test_fizbuzz {
id result = [FizzBuzz outputForInteger:[self.input integerValue]];
XCTAssertEqualObjects(self.expected, result, @"");
}