2015-10-21 3 views
2

Мне интересно, есть ли способ использовать единицу при XCtesting, чтобы указать постоянную переменную, которая не срывается между отдельными тестовыми примерами? Я понимаю, что в целом лучшие практики для модульного тестирования состоят в том, чтобы держать тесты как можно более самодостаточными, но в моей нынешней ситуации он заставил бы тесты выполнять намного быстрее, если бы я смог это сделать и сохранить постоянную переменную между тестовыми примерами.Использование переопределения init() в классе XCtest?

В настоящее время, любой тип функции инициализации, что я называю

override init() { 
    super.init() 
} 

Оставляет меня с ошибкой EXC_BAD_INSTRUCTION. Если я не могу использовать init() в XCTestCase, есть ли другая работа, которую я могу использовать?

ответ

3

Попробуйте переместить переменную за пределами класса XCTestCase.

import XCTest 

var counter = 0 // Note this is outside the class declaration 

class MyTests: XCTestCase { 
    override func setUp() { 
     super.setUp() 
     counter++ 
     print("Counter: \(counter)") 
    } 

    func testOne() { 
     ... 
    } 

    func testTwo() { 
     ... 
    } 

    func testThree() { 
     ... 
    } 
} 

Это дает результат следующим образом.

... 
Counter: 1 
... 
Counter: 2 
... 
Counter: 3 
... 
+0

Простой ответ. Никогда не думал об этом. Благодаря! – helloworld345123123123

+0

@ helloworld345123123123 Рад, что это помогло! Если это решает вашу проблему, можете ли вы пометить ответ как правильный? –

+0

Не отвечает на вопрос ничем одним определением; более сложные статические настройки невозможны таким образом, поскольку Swift не имеет статических блоков инициализации. – Raphael