Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Unit Test. Кто использует?

10.11.16 08:52
Re: 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 данные в нужный тебе вид?

 

Перейти на