Xcode project
Requirements
You can run the tests of your Xcode projects selectively through the command
line. For that, you can prepend your xcodebuild command with tuist – for
example, tuist xcodebuild test -scheme App. The command hashes your project
and on success, it persists the hashes to determine what has changed in future
runs.
In future runs tuist xcodebuild test transparently uses the hashes to filter
down the tests to run only the ones that have changed since the last successful
test run.
For example, assuming the following dependency graph:
FeatureAhas testsFeatureATests, and depends onCoreFeatureBhas testsFeatureBTests, and depends onCoreCorehas testsCoreTests
tuist xcodebuild test will behave as such:
| Action | Description | Internal state |
|---|---|---|
tuist xcodebuild test invocation |
Runs the tests in CoreTests, FeatureATests, and FeatureBTests |
The hashes of FeatureATests, FeatureBTests and CoreTests are persisted |
FeatureA is updated |
The developer modifies the code of a target | Same as before |
tuist xcodebuild test invocation |
Runs the tests in FeatureATests because it hash has changed |
The new hash of FeatureATests is persisted |
Core is updated |
The developer modifies the code of a target | Same as before |
tuist xcodebuild test invocation |
Runs the tests in CoreTests, FeatureATests, and FeatureBTests |
The new hash of FeatureATests FeatureBTests, and CoreTests are persisted |
To use tuist xcodebuild test on your CI, follow the instructions in the
Continuous integration guide.
Check out the following video to see selective testing in action: