XCParameterizedTestCase 1.0.1

XCParameterizedTestCase 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2014年12月

Michal Konturek 维护。



  • 作者:
  • Michal Konturek

License MIT

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 许可证下获取。请参阅 许可证文件

机制

XCParameterizedTestCaseXCTestCase 的子类。它包含一个测试方法,该测试方法根据提供给测试用例数据的数量执行多次。”

对于传递的每个测试用例数据,XCParameterizedTestCase 会将新的 XCTestCase 摩下水死刑成 XCTestSuite 与输入和期望值配对,这些输入和期望值由测试用例数据指定。

5 个测试用例数据的 FizzBuzz 参数化测试用例的示例输出

License MIT

安装

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.inputself.expected 属性实现您的测试。

- (void)test_fizbuzz {
    id result = [FizzBuzz outputForInteger:[self.input integerValue]];
    XCTAssertEqualObjects(self.expected, result, @"");
}