Classes, structs, enums and all their methods are internal
by default. This means they can be only accessed from the same module. The test cases are in a different target an this means they are in a different module. To be able to access the method you want to test, you need to import the module to be tested using the @testable
keyword.
Let's say we have a main module called ToDo
and we want to write tests for it. We would import that module like this:
@testable import ToDo
All test methods in the file with this import statement can now access all internal
classes, structs, enums and all their internal
methods of the ToDo
module.
You should never add the files with the elements you want to test to the test target because that can lead to hard to debug errors.