2016-04-02 2 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 

т.е. как я передать мои данные в passedInData в CalculatorAddTest?

Я попытался переопределить init :, но это даже не получилось вызвано (не знаю, какой назначенный инициализатор для XCTestCase и заголовок не дает никаких подсказок).

Спасибо!

ssteinerX

+0

Я не спрашиваю, как сделать итерацию, как получить мои данные в setUp, чтобы он мог использоваться в качестве исходных данных для каждого из тестов в тестовом примере. – ssteinerX

ответ

0

проверяемое лицо, которое запускает несколько XCTestCases является XCTestSuite. Мое предложение состояло бы в том, чтобы попытаться написать обычай XCTestSuite для повторения ваших данных и создания нескольких тестовых примеров в пакете.

+0

Спасибо, я обнаружил, что я, похоже, не могу найти, как получить тестовые данные, которые повторяются в XCTestSuite, отправленные в XCTestCase. Я хочу сказать: «Запустите этот XCTestCase, используя эти тестовые данные». вместо того, чтобы setUp() просто «знал», какие данные использовать. – ssteinerX

+0

Я сейчас смотрю на это: https://github.com/michalkonturek/XCParameterizedTestCase – ssteinerX

+0

@ssteinerx XCTestCase имеет очень простой интерфейс. Все, что вы можете сделать, это проверить тестовый сценарий, вы не можете сказать «запустить с этими данными». Вам нужно будет сделать данные неотъемлемыми для XCTestCase на некотором уровне, либо путем создания XCTestCase специально для этих данных, либо путем передачи XCTestCase, какие данные он должен выполнить до того, как он будет запущен. –

Смежные вопросы