我有一类具有多种测试方法的UI测试,当运行第一个测试时,我需要在我的应用程序上登录,并且我不需要以下方法,因为测试不会重新安装应用程序。 / p>
所以,我尝试在我的类上创建一个变量boolean但是在每次测试的乞讨时都会重新创建var。
我知道测试是按字母顺序运行的,但我认为这不是一个好方法,我想确保我的第二个测试正在运行,第三个测试正在运行......
有谁知道如何帮助我?
答案 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;
}