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

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

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

Спасибо!

Ответы [ 6 ]

16 голосов
/ 25 мая 2010

Совершенно верно убедиться, что модульный тест выполняется без исключения.

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

4 голосов
/ 25 мая 2010

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

3 голосов
/ 25 мая 2010

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

2 голосов
/ 25 мая 2010

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

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

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

0 голосов
/ 06 июля 2017

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

0 голосов
/ 25 мая 2010

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

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

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

...