UnitTest'ы и Enum
От: A.A.L. Украина  
Дата: 21.05.09 07:09
Оценка:
Нужно написать Юнит тесты для того что бы проверить правильно ли Enum серелизуется\десерелизуется в строку. Как "красивее" перебрать все возможные значения Enum. Вижу несколько вариантов — но все какие-то не красивые, кроме того, хотелось бы что бы при добавлении еще одного занчения в enum тест не нужно было бы корректировать или делалось это с минимум затрат
Re: UnitTest'ы и Enum
От: jazzer Россия Skype: enerjazzer
Дата: 21.05.09 08:48
Оценка:
Здравствуйте, A.A.L., Вы писали:

AAL>Нужно написать Юнит тесты для того что бы проверить правильно ли Enum серелизуется\десерелизуется в строку. Как "красивее" перебрать все возможные значения Enum. Вижу несколько вариантов — но все какие-то не красивые, кроме того, хотелось бы что бы при добавлении еще одного занчения в enum тест не нужно было бы корректировать или делалось это с минимум затрат


неплохо бы показать сам енум, в какие строки он должен сериализоваться, и что можно с этим енумом делать.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: UnitTest'ы и Enum
От: A.A.L. Украина  
Дата: 21.05.09 09:49
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, A.A.L., Вы писали:


J>неплохо бы показать сам енум, в какие строки он должен сериализоваться, и что можно с этим енумом делать.


Просто произвольный enum, где каждому значению соотвествуют некая строка и для которого оперделены операции << >> c потомками, выводящими в них эти строки.
Суть вопроса не в том, а в том, как правильно протестировать все возможыне значения enum, если не закладываться на то что они идут по порядку.
т.е. нужно сделать никие действия для всех значений enum в рамках UnitTest'а
Re[3]: UnitTest'ы и Enum
От: jazzer Россия Skype: enerjazzer
Дата: 21.05.09 11:30
Оценка:
Здравствуйте, A.A.L., Вы писали:

AAL>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, A.A.L., Вы писали:


J>>неплохо бы показать сам енум, в какие строки он должен сериализоваться, и что можно с этим енумом делать.


AAL>Просто произвольный enum, где каждому значению соотвествуют некая строка и для которого оперделены операции << >> c потомками, выводящими в них эти строки.

AAL>Суть вопроса не в том, а в том, как правильно протестировать все возможыне значения enum, если не закладываться на то что они идут по порядку.
AAL>т.е. нужно сделать никие действия для всех значений enum в рамках UnitTest'а

Произвольный енум средствами языка проитерировать невозможно, равно как и произвольный класс, скажем.
Нужны допольнительные костыли, либо в виде каких-то допущений (типа упорядоченности значений), либо со стороны строчек, в которые оно конвертируется (может, они у тебя лежат в массиве, а по нему проитерироваться не проблема), либо можно вообще воспользоваться сторонними тулзами, которые пропарсят объявления енума и соответствующих строчек и сгенерят из них юнит-тест.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: UnitTest'ы и Enum
От: dimchick Украина  
Дата: 21.05.09 14:01
Оценка:
Здравствуйте, A.A.L., Вы писали:

AAL>Нужно написать Юнит тесты для того что бы проверить правильно ли Enum серелизуется\десерелизуется в строку. Как "красивее" перебрать все возможные значения Enum. Вижу несколько вариантов — но все какие-то не красивые, кроме того, хотелось бы что бы при добавлении еще одного занчения в enum тест не нужно было бы корректировать или делалось это с минимум затрат


ИМХО это не корректно. Ты игноришь сам смысл тестирвания. У тебя в тесте должны быть параметры на вход и параметры на выход.

Если у тебя тест будет "автоматом" понимать новые енамы, то скорее всего ты будешь использовать тот же код, что и для сериализации енама, а это недопустимо. Ты не можешь тестировать код функцией, которая не доказала свою работоспособность.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.