Я хотел бы получить некоторые отзывы о том, что является одним из моих первых тестовых примеров 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. Кроме того, вы можете указать какой-то предел на длину строковых значений.
ваше тестовое покрытие почти все, что можно сделать, я думаю, что это довольно хорошо. единичный тест не должен быть исчерпывающим (это редко бывает возможным)
Я бы добавил только что-то вроде этого:
и, возможно, некоторые тесты для проверки hexcolor и boolean
Я бы добавил тесты для изменения типа существующего ключа. Кроме того, для существующего ключа без чтения, перейдите к readonly и сделайте это как с изменением типа, так и без него.
Кроме того, у вашего типа int есть диапазон? php может варьироваться в зависимости от платформы. float может выглядеть как int.