Почему + setup в моих тестовых случаях не вызывается, когда я создаю пользовательский набор тестов с XCTest? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть подкласс XCTestSuite, который я создаю и заполняю тестами на лету:

+ (XCTestSuite *)defaultTestSuite {
    MySuite *suite = [[MySuite alloc] initWithName:@"suite"];
    [suite addTest:[[MyTestCase alloc] initWithSelector:@selector(firstTest)]];
    [suite addTest:[[MyTestCase alloc] initWithSelector:@selector(secondTest)]];
    return suite;
}

+ (void)setUp {}
- (void)setUp {}
- (void)firstTest {}
- (void)secondTest {}

-(void)setUp вызывается для каждого теста, но +(void)setUp никогда не вызывается. Если я не использую свой собственный testSuite или я звоню:

 + (XCTestSuite *)defaultTestSuite {
    XCTestSuite *suite = [super defaultTestSuite];
    [suite addTest:[[MyTestCase alloc] initWithSelector:@selector(firstTest)]];
    [suite addTest:[[MyTestCase alloc] initWithSelector:@selector(secondTest)]];

, он действительно вызывается. Почему это?

1 Ответ

0 голосов
/ 27 марта 2020

XCTest имеет закрытый внутренний класс с именем XCTestCaseSuite, который является подклассом XCTestSuite. Вы можете увидеть источник Swift здесь . Это то, что отвечает за звонок +(void)setUp для вас. Если вам нужна такая же функциональность, вам придется продублировать ее в своем подклассе XCTestSuite. Я нигде не смог найти документацию по этому вопросу, но это имеет некоторый смысл в том, что если тестовые наборы поступают из разных классов, как вы заказываете, когда вызываются методы +(void)setUp/+(void)tearDown.

...