Не могли бы вы считать, что это правильный тест?

Я хотел бы получить некоторые отзывы о том, что является одним из моих первых тестовых примеров PHPUnit.

Предметом тестов является простой класс конфигурации в приложении PHP. Он используется для создания, хранения и извлечения настроек конфигурации.

Настройки сохраняются в массиве внутри класса. Каждая настройка имеет следующие свойства:

  • (например, frontend:menu:bgcolor )

  • type (один из string , int , hexcolor , boolean )

  • значение (смешанное)

  • только чтение (логическое)

Сначала необходимо создать каждую настройку. При создании каждому параметру присваивается тип, только флаг чтения (по умолчанию – false) и значение по умолчанию.

Методы класса:

 public function create($key, $value, $type = "string", $read_only = false) public function set($key, $value) public function get($key) 

Те тесты, которые я запускаю:

(ok) и (fail) – ожидаемые результаты теста.

  • Создайте параметр с именем test с string типа с начальным значением xyz (ok)

  • Загрузите test задание и ожидайте возвращаемое значение xyz (ok)

  • Установите для test настройки значение abc (ok)

  • Загрузите test задание и ожидайте возвращаемое значение abc (ok)

  • Загрузите настройку töst (сбой, ключ не существует)

  • Создайте параметр с именем test_read_only с string типа, начальное значение у Mary had a little lamb а флаг только для чтения установлен в true (ok)

  • Задайте настройку с именем test_read_only чтобы у Peter had a big lamb (сбой, ключ только для чтения)

  • Загрузите настройку с именем test_read_only и ожидайте возвращаемого значения. У Mary had a little lamb (ok)

  • Создайте параметр с именем test_integer с типом int , начальным значением 5 и флагом только для чтения, установленным в true (ok)

  • Создайте параметр с именем test_integer_second с типом int и начальным значением 5.23049505906 (сбой, начальное значение имеет неправильный тип)

  • Создайте параметр с именем test_weird с типом sdasfäödsf#ädfsaö (fail, type not found)

  • Задайте настройку с именем test_weird чтобы у Peter had a little lamb (fail, key not defined)

Вопросов:

  • Этот тест имеет смысл для вас?
  • Вы считаете, что это полный тестовый пример?
  • Что бы вы сделали по-другому или, кроме того?

Обновление : Предложения, которые появились до сих пор, которые я буду выполнять:

  • Проверка длины строки
  • Тесты, связанные с остальными типами данных boolean и hexcolor
  • Тесты ключевых именований не нужны сейчас, но будут в будущем.

Я бы добавил тест для отсутствующих типов (boolean и hexcolor), с допустимыми и недопустимыми значениями).

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

Еще один тест, который вы должны добавить мне: что произойдет, если вы создадите ключ два раза? С разными типами?

Кстати, у вас все хорошо, мне

В тестовых случаях, поскольку они имеют смысл, я бы не считал их полными, потому что у вас нет тестовых примеров для значений hexcolor или boolean. Кроме того, вы можете указать какой-то предел на длину строковых значений.

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

Я бы добавил только что-то вроде этого:

  • Установите для параметра test_integer значение «abc» (сбой, неправильный тип)

и, возможно, некоторые тесты для проверки hexcolor и boolean

Я бы добавил тесты для изменения типа существующего ключа. Кроме того, для существующего ключа без чтения, перейдите к readonly и сделайте это как с изменением типа, так и без него.

Кроме того, у вашего типа int есть диапазон? php может варьироваться в зависимости от платформы. float может выглядеть как int.