SourceForge.net Logo
prevtopnext
Система тестирования izh_test
    Вопросы-тезисы
        Какие преимущества имеет izh_test в сравнении с традиционным подходом.
Изменение программы, требующее адекватного изменения множества тестов.

Рассмотрим простейший unit-test, как он понимается в общепринятом смысле в большинстве популярных технологий (NUnit, JUnit и т.д.)
void test_sample()
{
  Object_to_test a= new Object_to_test();

  Assert.AreEqual(a.result_to_test(),"right result");

  a.method_to_test();

  Assert.AreEqual(a.result_to_test(),"right result after method_to_test");
}
Вроде всё очень просто, понятно и наглядно, пример практически списан из учебника. Написав один раз такой тест, можно его использовать много раз и наслаждаться определённой уверенностью в работоспособности кода.

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

Для того чтобы продолжать по-прежнему наслаждаться уверенностью, нужно скорректировать наш тест:
void test_sample()
{
  Object_to_test a= new Object_to_test();

  Assert.AreEqual(a.result_to_test(),"Right result");

  a.method_to_test();

  Assert.AreEqual(a.result_to_test(),"Right result after method_to_test");
}
Это несложно сделать, если у нас один тест, два теста. Но если система тестов у нас наработана уже достаточно большая, то такие изменения будут занимать очень много времени.

В то же время, если мы просто напишем
void test_sample()
{
  Object_to_test a= new Object_to_test();

  Console.Out.Writeln(a.result_to_test());

  a.method_to_test();

  Console.Out.Writeln(a.result_to_test());
}
То простым diff-ом между старым и новым выводом мы сможем легко контролировать, что же у нас "массово изменилось", а простым копированием файла сможем заменить старые эталонные результаты всех .result_to_test() на новые..


prevtopnext

SourceForge.net Logo