Система тестирования 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() на новые..