15

I've setup some XCTest unit tests for my application and would like every time I run tests for it to run in a brand new install of the application. Currently when I run subsequent tests it runs the tests in the same application that was run before which has a lot of state information already changed by the previous tests.

Is there a way to indicate that when you run unit tests that it should run the tests on a fresh version of your application?

Shizam
  • 9,587
  • 8
  • 49
  • 81

2 Answers2

28

Maybe this works, but only for Simulator.

In Product > Scheme > Edit Scheme...

enter image description here

xcrun simctl is command line utility to control the iOS Simulator. This uninstalls com.yourcompany.AppName application from booted simulator before running tests.

I don't know how to do like this for real device :(

rintaro
  • 50,337
  • 13
  • 128
  • 138
8

In addition to @rintaro's answer, if you set "Provide build settings from" to your app, you can add a generic command, which will keep working when your bundle id changes:

xcrun simctl uninstall booted ${PRODUCT_BUNDLE_IDENTIFIER}
Koen.
  • 23,152
  • 6
  • 79
  • 76