2015-08-05 3 views
6

Как остановить выполнение единичного теста, если логика не удалась. Ниже приведен пример. Как остановить выполнение, когда условие XCTAssertEqual («Hello», «Hi», «Passed») не выполнено.Функция прерывания XCTAssert

func test_one() 
{  
XCTAssertEqual("Hello", "Hi", "Passed")  
let b = "Good Morning!" 
// code continues... 

} 
+0

Вы должны иметь только один Assert на тест, и она должна быть последней в тесте, так что это действительно проблема с вашей структуры кода, что опять-таки означает, что хороший ответ не может быть действительно предоставлен для вашей проблемы. –

+1

Мне будет сложно, если мы проверим логику синтаксического анализа. Я имею в виду, что у меня есть ответ службы, я должен разбирать данные и хранить их в базе данных. Я должен проверить, правильно ли выполняется синтаксический анализ ответа. Очевидно, что у меня будет целая логика синтаксического анализа в одной функции, и поэтому будут множественные условия утверждения. Пожалуйста, исправьте меня, если я ошибаюсь – Coder

+0

Нет, вы можете просто сделать общую настройку и иметь индивидуальные утверждения в каждом тесте. Несколько утверждений означают, что вы не знаете, почему тест завершился неудачно, не прочитав журналы в деталях, что нарушает идею быстрой обратной связи. –

ответ

21

XCTestCase имеет переменную var continueAfterFailure: Bool, который по умолчанию верно. Это означает, что тест продолжает работать даже после того, как тест не

override func setUp() { 
    super.setUp() 
    // Put setup code here. This method is called before the invocation of each test method in the class. 
    continueAfterFailure = false 
} 
+0

Спасибо, Кевин. Могу ли я использовать этот continueAfterFailure между двумя условиями утверждения. Как уже упоминалось в моем вопросе, если условие XCTAssert 1 не выполнено, условие XCTAssert 2 не должно выполняться. – Coder

+0

Вот что произойдет, если вы установите continueAfterFailure на false – Kevin

+0

Удивительный! не знал об этом! – Sajjon