2016-04-02 13 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{ 
    ... 
} 

だから、質問は、どのようにI:

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にデータを組み込む必要があります。 –

関連する問題