Как узнать, какой тест пользовательского интерфейса выполняется в классе? Когда начнется второй тест

У меня есть класс теста пользовательского интерфейса со многими методами тестирования, и при запуске первого теста мне нужно выполнить вход в мое приложение, а следующие методы мне не нужны, потому что тест не переустанавливает приложение.

Итак, я попытался создать логическую переменную в своем классе, но в начале каждого теста var воссоздается.

Я знаю, что тесты выполняются в алфавитном порядке, но я думаю, что это не очень хороший способ, я хочу убедиться, что мой второй тест выполняется, третий и т. д.

Кто-нибудь знает, как мне помочь?


person Salmo    schedule 05.11.2015    source источник


Ответы (1)


В вашем UItestFile создайте свойство loggedIn

@interface UITests()
@property (nonatomic,assign) BOOL loggedIn; //use this to know wether user is logged in or not
@end

-(void)testLogin
{ if //user logged set the loggedIn flag and skip the test
  { self.loggedIn = YES;
    return;
  }
 else
  //perform login and test login flow
}

Тесты не обязательно выполняются в алфавитном порядке, чтобы изменить порядок тестов, вы можете использовать testInvocation и всегда сначала вызывать testLogin.

+ (NSArray <NSInvocation *> *)testInvocations
{
    NSArray *testNames = @[@"testLogin",
                           @"testY",
                           @"testB",
                           @"testC",
                           @"testA",
                          ];

    NSMutableArray *result = [NSMutableArray array];
    for (NSString *testName in testNames)
    {
        SEL selector = NSSelectorFromString(testName);
        NSMethodSignature *methodSignature = [self instanceMethodSignatureForSelector:selector];
        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature];
        invocation.selector = selector;
        [result addObject:invocation];
    }
    return result;
}
person Sandy    schedule 09.11.2015
comment
Для проводников Swift свойство loggedIn (необязательный тип) должно быть определено как тип свойства Static, поскольку каждый XCTest создает экземпляр нового экземпляра тестового класса для каждого метода test(), а переменная экземпляра будет сброшена до значения по умолчанию. - person Sushant; 14.11.2015