I have a UI test like so :
func testHome(){
if(isRedOrange.clear()){
//code
}
}
How would I access my isRedOrange.clear function from my isRedOrange.swift file from my UI tests?
UI Tests are black boxed, so you cant have access to your code.
You can use @testable import
in Unit Tests, so full access will be provided.
When you're running UITests this is not working, because during a UITest your test class cannot access your app's code.
From Apple's Docs:
UI testing differs from unit testing in fundamental ways. Unit testing enables you to work within your app's scope and allows you to exercise functions and methods with full access to your app's variables and state. UI testing exercises your app's UI in the same way that users do without access to your app's internal methods, functions, and variables. This enables your tests to see the app the same way a user does, exposing UI problems that users encounter.
You must achieve everything using .tap()
's on elements. .accessibilityIdentifier
will help you to get the right element
Goto projects settings -> Select uitests target -> build phases tab -> add your swift file to compile sources
You need to import your main module (project) into tests:
ENABLE_TESTABILITY
in Build Settings
of the main project target to true.@testable import MAIN_TARGET_NAME
in your UITests file.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With