如何知道哪个UI测试在一个类中运行?第二次测试开始时

时间:2015-11-05 17:45:11

标签: swift xcode7 ui-testing xcode-ui-testing

我有一类具有多种测试方法的UI测试,当运行第一个测试时,我需要在我的应用程序上登录,并且我不需要以下方法,因为测试不会重新安装应用程序。 / p>

所以,我尝试在我的类上创建一个变量boolean但是在每次测试的乞讨时都会重新创建var。

我知道测试是按字母顺序运行的,但我认为这不是一个好方法,我想确保我的第二个测试正在运行,第三个测试正在运行......

有谁知道如何帮助我?

1 个答案:

答案 0 :(得分: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;
}