Считаете ли вы это правильным тестовым примером? - PullRequest
1 голос
/ 11 марта 2010

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

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

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

  • ключ (например, frontend:menu:bgcolor)

  • тип (один из 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 (ок)

  • Установите настройку test на abc (ок)

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

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

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

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

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

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

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

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

  • Установите настройку с именем test_weird на Peter had a little lamb (ошибка, ключ не определен)

Вопросы:

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

Обновление : Предложения, которые дошли до меня, я буду их реализовывать:

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

Ответы [ 4 ]

2 голосов
/ 11 марта 2010

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

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

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

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

2 голосов
/ 11 марта 2010

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

1 голос
/ 11 марта 2010

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

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

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

и, возможно, некоторые тесты для проверки шестнадцатеричного и булева типов

0 голосов
/ 11 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...