Search code examples
xcodexctestxcode-ui-testingios-ui-automationxctestcase

XCTestCase not launching application in setUp class method


I am using XCode 8 and XCTestCase. I created a class setUp function to be ran once before all tests, and the other setUp to be ran before each test case.

I want the application to be launched once before all test cases. If I use the launch in the class setUp, it never gets executed. If I use the launch in the setUp that is ran before each test, it does launch the test.

enter image description here

It prints:

IN CLASS SETUP

END CLASS SETUP

IN SETUP

IN TEST METHOD

But the application never gets launched. If I uncomment the line to launch the application in the second setUp, it will get launched.

How can I have the application be launched once before all the tests in my test class?


Solution

  • I faced the same issue and solved it the following way

    class MyTestCase: XCTestCase {
    
        static var app: XCUIApplication?
    
        override func setUp() {
            super.setUp()
    
            if MyTestCase.app == nil {
                MyTestCase.app = XCUIApplication()
                MyTestCase.app!.launch()
            }
        }
    
        // Tests...
    }
    

    This will only launch the application at the first time the setUp method is called.