Можно ли писать такие бесполезные методы, чтобы угодить TDD?
Да, но, возможно, нет.
Часть «да»: вам разрешено оформлять дизайн таким образом, чтобы тестирование было проще, включая создание методов, специально предназначенных для наблюдаемости. Такие вещи часто оказываются полезными позже, когда вы пытаетесь создать представления для понимания процессов, работающих в рабочей среде.
Возможно не часть: для чего нужен статус Job ::? Какое наблюдаемое поведение (я) в системе изменяется, когда установлен этот статус? Какие ошибки были бы поданы, если бы Job :: markDone был неактивным? Это то, что вы действительно хотите испытать.
Например, может случиться так, что вам нужно будет описать работу как документ JSON, а изменение статуса работы изменит значение, отображаемое в JSON. Большой! Проверьте это.
job.markDone()
json = job.asJson()
assert "DONE".equals(json.getText("status))
В доменном слое / бизнес-логике объекты интересны тем, как они используют свои скрытые структуры данных для ответа на запросы. Команды интересны не потому, что они изменяют структуру данных, а потому, что измененная структура данных приводит к разным результатам запроса.