Skip to content

Generated project

To run tests selectively with your generated project, use the tuist test command. The command hashes your Xcode project the same way it does for warming the cache, and on success, it persists the hashes on to determine what has changed in future runs.

In future runs tuist 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 test will behave as such:

ActionDescriptionInternal state
tuist 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 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 test invocationRuns the tests in CoreTests, FeatureATests, and FeatureBTestsThe new hash of FeatureATests FeatureBTests, and CoreTests are persisted

tuist test integrates directly with binary caching to use as many binaries from your local or remote storage to improve the build time when running your test suite. The combination of selective testing with binary caching can dramatically reduce the time it takes to run tests on your CI.

Released under the MIT License.