Дразнить каждое поле или хороший API - PullRequest
0 голосов
/ 21 марта 2011

Как вы пишете код, который легко тестируется и одновременно инкапсулирует данные?

Например, если я хочу unittest некоторый класс, я объявляю методы получения и установки для всех полей. В противном случае я не могу вводить макеты. С другой стороны, я хочу написать класс, который имеет действительно хороший API с действительно необходимыми публичными методами.

Полагаю, вы меня понимаете.

1 Ответ

1 голос
/ 21 марта 2011

Если в вашем классе есть соавтор, который нуждается в насмешках, он получит его откуда-либо - через конструктор или через сеттер.Так что иметь их - не проблема дизайна.

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

Однажды я работал над проектом, в котором разработчик настаивал на том, чтобы все было открыто, чтобы онмог проверить внутреннее состояние.Это было ... ммм ... весело.

...