Есть ли смысл проверять утверждения?
Исходный код приложения, который я сейчас имею (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))
}
Если я неправильно понимаю ваш вопрос, пожалуйста, дайте мне знать, и я пересмотрю свой ответ.