2016-04-02 6 views
0

Ich habe mehrere Versionen (IOS, JavaScript, Android) des gleichen Rechners, die auf jeder Plattform das gleiche Ergebnis erzeugen müssen.Wie über Testdaten iterieren und dann an XCTestCase übergeben?

Ich habe eine Reihe von Testdaten entwickelt, wie über mehrere Datensätze verteilt:

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} 

... und so weiter.

Ich habe eine einfache XCTestCase wie:

@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{ 
    ... 
} 

Also, die Frage ist, wie man I:

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

heißt wie gebe ich meine Daten in passedInData in CalculatorAddTest?

Ich versuchte überschreiben init :, aber das wurde nicht einmal aufgerufen (keine Ahnung, was Initialisierungsinitiator für XCTestCase ist und Header gibt keine Hinweise).

Danke!

ssteinerX

+0

Ich frage nicht, wie die Iteration zu tun, nur, wie meine Daten in Setup zu bekommen, so dass es als die Quelldaten für jeden der Tests im Testfall verwendet werden kann. – ssteinerX

Antwort

0

eine prüfbare Einheit, die mehrere Durchläufe ein XCTestCasesXCTestSuite ist. Mein Vorschlag wäre, eine benutzerdefinierte XCTestSuite zu schreiben, um über Ihre Daten zu iterieren und mehrere Testfälle innerhalb der Suite zu erstellen.

+0

Danke, ich habe festgestellt, dass ich nicht in der Lage bin zu finden, wie die Testdaten, die in der XCTestSuite durchlaufen werden, in das XCTestCase gesendet werden. Ich möchte sagen "Führen Sie dieses XCTestCase mit diesen Testdaten aus." Anstatt das SetUp() zu verwenden, wissen Sie nur, welche Daten Sie verwenden sollen. – ssteinerX

+0

Ich schaue mir das gerade an: https://github.com/michalkonturek/XCParameterizedTestCase – ssteinerX

+0

@ssteinerx Ein XCTestCase hat eine sehr einfache Schnittstelle. Alles, was Sie tun können, ist zu sagen, dass der Testfall ausgeführt werden soll. Sie können nicht sagen "mit diesen Daten arbeiten". Sie müssen die Daten, die in XCTestCase enthalten sind, auf einer bestimmten Ebene erstellen, entweder indem Sie XCTestCase speziell für diese Daten erstellen, oder indem Sie dem XCTestCase mitteilen, vor welchen Daten es ausgeführt werden soll. –

Verwandte Themen