Я хотел бы получить некоторые отзывы о том, что является одним из моих первых тестовых примеров 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.