如何迭代测试数据,然后传递给XCTestCase?

时间:2016-04-02 15:13:22

标签: objective-c xctestcase

我有相同计算器的多个版本(IOS,JavaScript,Android),必须在每个平台上产生相同的结果。

我开发了一组测试数据,分布在多个数据集中,如:

onedigit.json:
  {n1: 1, n2: 2, a: 3},
  {n1: 4, n2: 5, a: 9}...

twodigit.json
  {n1: 32, n2: 11, a: 43},
  {n1: 42, n2: 0, a: 42}

......等等。

我有一个简单的XCTestCase,如:

@interface CalculatorAddTest: XCTestCase

@property NSNumber n1;
@property NSNumber n2;
@property NSNumber a;

@end

@implementation CalculatorAddTest

- (void) setUp{
    self.n1 = passedInData.n1;
    self.n2 = passedInData.n2;
    self.a = passedInData.a;
}

- testAdd{
   XCAssert( Calculator.add(self.n1, self.n2) == self.a );
}

- (void) tearDown{
    ...
}

所以,问题是,我该如何:

for dataSet in dataSets:
    for d in dataSet:
        run CalculatorAddTest with d

即。如何将我的数据传递到CalculatorAddTest中的passedInData

我尝试覆盖init:,但是甚至没有调用(不知道XCTestCase的指定初始化程序是什么,并且标题没有提供线索)。

谢谢!

ssteinerX

1 个答案:

答案 0 :(得分:0)

运行多个XCTestCases的可测试实体是XCTestSuite。我的建议是尝试编写自定义XCTestSuite来迭代您的数据并在套件中创建多个测试用例。