Using named suites like in this answer worked well for me. Removing the user defaults used for testing could also be done in func tearDown()
.
class MyTest : XCTestCase {
var userDefaults: UserDefaults?
let userDefaultsSuiteName = "TestDefaults"
override func setUp() {
super.setUp()
UserDefaults().removePersistentDomain(forName: userDefaultsSuiteName)
userDefaults = UserDefaults(suiteName: userDefaultsSuiteName)
}
}