Про макросы
Как рефакторит код на (pic. 1) нормальный человек: - На 4 и 9 строке повтор - создание нового стека. - Вынесем повторяющийся код в setUp для тестов, стек в поля класса. - конец Получается код на (pic. 2).
Как рефакторит код админ, который недоумевает, почему макросов нет в каждом языке (в том числе и Java, в которой приведен пример кода): - В строках 2-6 и 7-12 повторяющийся код, отличается только названием теста и кодом после инициализации стека. - Вынесем весь этот код в макрос. - конец Получился бы код, похожий на (pic. 3). В итоге: - меньше повторов; - не используется специальная конструкция setUp, сделанная специально для тестов, специально для выполнения в начале каждого теста. Вместо этого используется только средство языка макрос (если бы они были); - определение макроса не влияет на все тесты. Можно определить макрос для тестов, в которых стек инициализируется значениями, или используются два стека, и это никак не заденет другие тесты. В случае с setUp для этого придется делать несколько классов, а в Java это означает еще и несколько файлов. В итоге либо дублирование кода, но тесты в одном классе, либо все тесты в одном классе, но в инициализации мешанина, либо тесты в разных классах.