My test suite contains some test cases. I have some private functions where I will check elements existence. Consider I have three test cases:
func test_1() {
    ...
    checkListViewElements()
    ...
}
func test_2() {
    ...
}
func test_3() {
    ...
    checkListViewElements()
    ...
}
private func checkListViewElements() {
    //Checking existence
}
Since I consider each test case as independent, the private function checkListViewElements() may get repeat within the test cases.
Problem:
- When I run the whole test suite, all the three test cases(test_1, test_2 and test_3) will be executed.
- The private method checkListViewElements()will be called twice. This will result with the increased amount of test suite completion time.
What I wanted:
- I have so many functions like checkListViewElements()within my code. I want them to run only once when I run the whole test suite. (Remember, for each test case, the application terminates and open freshly)
What I tried:
var tagForListViewElementsCheck = "firstTime" //Global variable
private func checkListViewElements() {
   if tagForListViewElementsCheck == "firstTime" {
      //Checking existence
      tagForListViewElementsCheck = "notFirstTime"
   }
   else {
      //Skip
   }
}
- If I use local variables as tag, it works fine. But here, I have to create each tag for each private method. I really hated that.
- I tried with dispatch_onceand it seems not supported in Swift 4
- Then I tried with static structs by referring this. It also does not seems working.
If there is any other nice approach to do it? Thanks in advance!
 
    