Есть ли смысл проверять утверждения?

Исходный код приложения, который я сейчас имею (ObjC), иногда использует NSAssert (как и многие другие программы).

Я вижу модульный тест, который проверяет, что утверждение вызывается с использованием XCTAssertThrows.

Правильно ли это с точки зрения TDD для проверки утверждений?

Кроме того, если я использую отладчик во время тестирования, он все время останавливается в этих утверждениях, что раздражает. Если я использую NS_BLOCK_ASSERTIONS=1, я исправлю это, но, очевидно, больше не будет работать, и этот тест не пройден.

Любая подсказка о том, как управлять этим?

2 ответа

Если следовать чистому стилю TTD, у вас будет тест для утверждения, иначе вы бы не написали его в первую очередь - т.е. напишите минимальное количество кода для прохождения теста.

Несомненно, assert является ответом на условие ошибки, и, имея его, вы не хотите выполнять код после assert, если он срабатывает.

Может быть, подумайте в этих терминах, чтобы решить: без теста кто-то может удалить утверждение, и сборка не будет нарушена (без ошибок теста), так каковы будут последствия выполнения кода после утверждения для условия ошибки?

Я хотел бы предложить, что если вам нужно утверждение по конкретной причине, то сделайте тест для этого.

Простите, если я неправильно понимаю ваш вопрос; пожалуйста, потерпите меня

XCTAssertThrowsError используется, чтобы утверждать, что генерируется исключение. Используйте его для тестов, которые ожидают исключения, такие как следующее:

func test_Divide_GivenADivisorOfZero_ThrowDivideByZeroException() 
{
   let subject = Mathematician()
   // test passes if the exception is thrown; otherwise it fails
   XCTAssertThrowsError(try subject.Divide(5, 0))
}

Если я неправильно понимаю ваш вопрос, пожалуйста, дайте мне знать, и я пересмотрю свой ответ.

Другие вопросы по тегам