Pull to refresh

Comments 25


Надеюсь этот скриншот не из реального проекта?

Не из реального. Но мог бы быть из реального. А что?

Вы смешали в одном компоненте как минимум 3 ответственности.

Это реакт компонент из одного поля. Как вы предлагаете разделять ответственность?

Который внезапно сам решает показываться ему или нет, знает про авторизацию и сам же грузит для себя данные.

Он не знает за авторизацию, он грузит данные из redux State, в которых может быть либо возвращенные данные с сервера, либо ошибка, либо нет аутентификации.

Test public void loginController_whenValidUsername_andValidPassword_shouldLogUserIn(){}

Как вы это читаете? У меня глаза вытекают при попытке распарсить.

Тут либо выбирать, что важнее, читаемый отчет о тестировании, или названия функций.

Либо использовать
@Unroll
читаемый отчет о тестировании

А его кто-то реально читает?

Зависит от контекста.
Если тест написан исходя из цели: управление качеством с минимальными затратами, то тесты будут регулярно падать, и понятное сообщение об ошибке (понятное широкому кругу лиц) упрощает восстановление.

Вообще тесты — весьма специфичный артефакт. Продуктивный код и код тестов — подходы могут отличаться очень серьезно, т.к. у них цели разные.

Речь не про сообщения об ошибках, а именно об отчётах с листингом всех успешных тестов.

Экий вы затейник ;), листинг всех успешных тестов читать…
Даже не знаю что сказать… ;)

Либо использовать Junit5 аннотацию @DisplayName

Да, это хорошая опция, если проект позволяет

Хорошие кандидаты на название компонента могут содержать название паттерна: Validator, Strategy, Builder, Transformer, Controller и тп. Или название события: Submitter, Login, ReadonlyOrderView и тп. Т.е. в зависимости от названия компонента должны быть определены и входные и выходные значения главной функции класса. Плохие названия: слишком абстрактные (Service,Component,Helper,Utility) и двойные (ValidatorAndRenderer).

А Validator, Builder и тд не абстрактные значит? Как понять какие абстрактные, а какие нет?

OrderValidator имеет метод validate и возвращает либо boolean, либо validationresult с ошибками. OrderBuilder имеет метод Build и возвращает Order. OrderService — непонятно что делает. Вот что я имею ввиду

OrderService имеет метод order и возвращает boolean. ButtonComponent имеет метод render и возвращает DOM. MultiplyHelper имеет метод multiply и возвращает number.

OrderService имеет метод order — то ниоткуда не следует. Я бы предположил, что он имеет методы CRUD для entity Order, но нет необходимости гадать.
ButtonComponent норм, но component не особо добавляет смысла, разве что в контексте фреймворка какого-то. MultiplyHelper is effectively Multiplier.

А откуда следует, что OrderValidator имеет метод validate, а не семейство методов visit_* для анализа AST?


ButtonComponent, ButtonState, ButtonTemplate, ButtonInterface… LogComponent, PageComponent, BookComponent...


MultiplyHelper, MultiplyToken, MultiplyNode, MultiplyHotkey, MultiplyIcon...

Это, вероятно, следует из контекста. Вряд ли в одном проекте сидит и AST парсер, и CRUD операции для сущности.
В остальном вы перечислили POJOs, которые возвращаются из методов, а не тестируемые классы. Какой метод у Icon?

Только в статье вы клеймите одни имена и восхваляете другие безотносительно контекста.


Метод у иконки: render

спецификации должны соотноситься с юзер стори в терминах

И далее вы говорите исключительно про системные тесты. Вы бы хоть обозначили это явно, а то кто-то может начать и модульные тесты так писать.

Т.е. по вашему модульные тесты не надо называть внятно?

Sign up to leave a comment.

Articles