Search code examples
iosswiftxcodeimportxcode-ui-testing

How to import my App module into MyAppUITests file?


This is my simple test case:

import XCTest
@testable import MyApp //it doesn't work

because of this:

enter image description here

class TabBarControllerTests: XCTestCase {

    override func setUp() {
        super.setUp()

        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject([], forKey: DBTabBarOrderedIndexesKey) //key is undefined, because of lack of my app module
        defaults.synchronize()

        continueAfterFailure = false
        XCUIApplication().launch()
    }

    func testIsOrderOfTabsSaved() {

        XCUIApplication().tabBars.buttons["Catering"].tap()
        //what next?
    }
}

Once I tap UITabBarItem I change the value of DBAppSettings.mode, so here I would like to have an access to my DBAppSettings.mode property to check if it is really changed.

I noticed that there is one weird thing, when I build my app, and check what was built, there is no build for my UITest target. Is it important?

enter image description here


Solution

  • This is a response from Apple:

    UI tests execute differently from Unit tests - Unit tests run inside your application process so they can access your application code. UI tests execute in a separate process, outside your application, so they can simulate how the user interacts with the application. It’s not expected that you will be able to access your app class from a UI test.