2016-04-02 24 views
0

我有几个版本(IOS,JavaScript,Android)的同一个计算器,必须在每个平台上产生相同的结果。如何遍历测试数据,然后传递给XCTestCase?

我已经开发了一组测试数据,跨多个数据集一样蔓延:

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

+0

我不问如何做迭代,只是如何让我的数据进入setUp,因此它可以用作测试用例中每个测试的源数据。 – ssteinerX

回答

0

运行多个XCTestCasesXCTestSuite一个可测试实体。我的建议是尝试编写一个定制的XCTestSuite来迭代你的数据,并在套件中创建多个测试用例。

+0

谢谢,我发现,我似乎无法找到的是如何获取测试数据,在XCTestSuite中迭代,发送到XCTestCase中。我想说“使用这个测试数据运行这个XCTestCase”。而不是让setUp()只是“知道”要使用的数据。 – ssteinerX

+0

我目前正在看这个:https://github.com/michalkonturek/XCParameterizedTestCase – ssteinerX

+0

@ssteinerx XCTestCase有一个非常简单的界面。你所能做的只是告诉测试用例运行,你不能说“用这些数据运行”。您将不得不在某个级别上为XCTestCase创建内部数据,或者通过为该数据专门构建XCTestCase,或者在XCTestCase运行之前告诉XCTestCase应该运行哪些数据。 –

相关问题