Могу ли я написать тест без каких-либо утверждений в нем?

Я хотел бы знать, если "нормально" писать тест без каких-либо "утверждений" в нем. Таким образом, тест завершится с ошибкой только при возникновении исключения/ошибки.

Например: как тест, который имеет простой запрос выбора, чтобы обеспечить правильную настройку базы данных. Поэтому, когда я меняю какую-то конфигурацию db, я повторно запускаю этот тест и проверяю правильность конфигурации.

Спасибо!

Ответ 1

Совершенно верно, чтобы убедиться, что unit test работает без возникновения исключения.

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

Ответ 2

Как отметил @Kyle, ваш тестовый пример действителен. На самом деле обратное также было бы правильным: когда вы пишете тестовый пример, чтобы подтвердить, что определенный вызов с определенным параметром (-ами) приводит к исключению.

Ответ 3

Конечно, вы можете это сделать. Также отлично писать тест без утверждений, где ожидаемый результат - это исключение. Я знаю, что testng позволит вам указать исключение, которое должно быть выбрано, и тест завершится неудачно, если ожидаемое исключение не будет выбрано.

Ответ 4

Тестирование - это действительно субъективное обсуждение. Некоторые люди скажут "нет", у вас всегда должен быть синтаксис AAA. Лично я написал тесты, которые делают вещи, очень похожие на то, о чем вы говорите, поэтому я бы сказал, конечно же, если это поможет вам создать более стабильное приложение, то почему бы и нет.

Например, в NUnit я считаю [ExpectedException typeof (XXXX)] логически эквивалентным Assert.

Также в некоторых тестах вы можете ничего не утверждать, кроме как ожидать определенного порядка выполнения через Mocks и Expects.

Ответ 5

Конечно, допустимо написать unit test, который не имеет никаких утверждений. Вы можете сделать это для:

  • Тестирование случая, которое заканчивается без исключения. В этом случае, если можно, приятно одеть тест с конкретным типом исключения, как в [ExpectedException (MyException)].

  • Тестирование функции есть. Даже нет возможности, чтобы тест мог генерировать исключение, вы можете сделать этот тест неудачным, если кто-то решит удалить эту функцию. Если в тесте используется метод, и метод удален, тест просто не будет создан.

Ответ 6

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