Нужно написать Юнит тесты для того что бы проверить правильно ли Enum серелизуется\десерелизуется в строку. Как "красивее" перебрать все возможные значения Enum. Вижу несколько вариантов — но все какие-то не красивые, кроме того, хотелось бы что бы при добавлении еще одного занчения в enum тест не нужно было бы корректировать или делалось это с минимум затрат
Здравствуйте, A.A.L., Вы писали:
AAL>Нужно написать Юнит тесты для того что бы проверить правильно ли Enum серелизуется\десерелизуется в строку. Как "красивее" перебрать все возможные значения Enum. Вижу несколько вариантов — но все какие-то не красивые, кроме того, хотелось бы что бы при добавлении еще одного занчения в enum тест не нужно было бы корректировать или делалось это с минимум затрат
неплохо бы показать сам енум, в какие строки он должен сериализоваться, и что можно с этим енумом делать.
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, A.A.L., Вы писали:
J>неплохо бы показать сам енум, в какие строки он должен сериализоваться, и что можно с этим енумом делать.
Просто произвольный enum, где каждому значению соотвествуют некая строка и для которого оперделены операции << >> c потомками, выводящими в них эти строки.
Суть вопроса не в том, а в том, как правильно протестировать все возможыне значения enum, если не закладываться на то что они идут по порядку.
т.е. нужно сделать никие действия для всех значений enum в рамках UnitTest'а
Здравствуйте, A.A.L., Вы писали:
AAL>Здравствуйте, jazzer, Вы писали:
J>>Здравствуйте, A.A.L., Вы писали:
J>>неплохо бы показать сам енум, в какие строки он должен сериализоваться, и что можно с этим енумом делать.
AAL>Просто произвольный enum, где каждому значению соотвествуют некая строка и для которого оперделены операции << >> c потомками, выводящими в них эти строки. AAL>Суть вопроса не в том, а в том, как правильно протестировать все возможыне значения enum, если не закладываться на то что они идут по порядку. AAL>т.е. нужно сделать никие действия для всех значений enum в рамках UnitTest'а
Произвольный енум средствами языка проитерировать невозможно, равно как и произвольный класс, скажем.
Нужны допольнительные костыли, либо в виде каких-то допущений (типа упорядоченности значений), либо со стороны строчек, в которые оно конвертируется (может, они у тебя лежат в массиве, а по нему проитерироваться не проблема), либо можно вообще воспользоваться сторонними тулзами, которые пропарсят объявления енума и соответствующих строчек и сгенерят из них юнит-тест.
Здравствуйте, A.A.L., Вы писали:
AAL>Нужно написать Юнит тесты для того что бы проверить правильно ли Enum серелизуется\десерелизуется в строку. Как "красивее" перебрать все возможные значения Enum. Вижу несколько вариантов — но все какие-то не красивые, кроме того, хотелось бы что бы при добавлении еще одного занчения в enum тест не нужно было бы корректировать или делалось это с минимум затрат
ИМХО это не корректно. Ты игноришь сам смысл тестирвания. У тебя в тесте должны быть параметры на вход и параметры на выход.
Если у тебя тест будет "автоматом" понимать новые енамы, то скорее всего ты будешь использовать тот же код, что и для сериализации енама, а это недопустимо. Ты не можешь тестировать код функцией, которая не доказала свою работоспособность.