Skip to content

Xcode project

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:

  • FeatureA has tests FeatureATests, and depends on Core
  • FeatureB has tests FeatureBTests, and depends on Core
  • Core has tests CoreTests

tuist xcodebuild test will behave as such:

ActionDescriptionInternal state
tuist xcodebuild test invocationRuns the tests in CoreTests, FeatureATests, and FeatureBTestsThe hashes of FeatureATests, FeatureBTests and CoreTests are persisted
FeatureA is updatedThe developer modifies the code of a targetSame as before
tuist xcodebuild test invocationRuns the tests in FeatureATests because it hash has changedThe new hash of FeatureATests is persisted
Core is updatedThe developer modifies the code of a targetSame as before
tuist xcodebuild test invocationRuns the tests in CoreTests, FeatureATests, and FeatureBTestsThe 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:

Released under the MIT License.