Unit Test. Кто использует?
:) не я же буду это все тестировать :) понимать, и быть готовым менять, должен ты :) скорее всего существующий код плохо поддается тестированию и если хочешь тестировать этот код юнит-тестами, то придется этот код менять.
основные перемены связаны с тем, чтобы можно было подменить любой вызов.
Например код типа такого (MyDateTime - обертка над System.DateTime):
public IQuery GetQuery (ISettings settings, IParameters parameters) { EQueryType queryType = GetQueryType (settings); if (MyDateTime.Now.Day % 2 == 0 && (int)queryType % 2 == 1) { throw new MyException ("This exception can NEVER be thrown!"); } else if (MyDateTime.Now.Day % 2 == 0) { queryType++; } IQuery query = GenerateQuery (queryType, parameters) if (query == null) throw new MyException ("Something went wrong!") return query; } protected virtual EQueryType GetQueryType (ISettings settings) { .... } protected virtual IQuery GenerateQuery(EQueryType queryType, IParameters parameters) { .... }
тестируется очень легко. Собственно говоря, для этого кода достаточно 4 тестов:
1) спровоцировать исключение "This exception can NEVER be thrown!"
2) убедиться, что queryType увеличилось на 1
3) спровоцировать исключение "Something went wrong!"
4) убедиться, что функция завершается без исключений
Ну а функции GetQueryType и GenerateQuery тестируются отдельно.
вот получить правильный ответ от системы - не выходит...
не выходит правильно преобразовать raw данные в нужный тебе вид?