Думайте об этом с точки зрения поведения, а не с точки зрения того, какие методы существуют. Метод с именем method
имеет особое поведение, если b
имеет значение true. Он имеет другое поведение, если b
ложно Это означает, что вы должны написать два разных теста для method
; по одному на каждый случай. Таким образом, вместо трех ориентированных на метод тестов (один для method
, один для method1
, один для method2
, у вас есть два ориентированных на поведение теста.
В связи с этим (недавно я предложил это в другой ветке SO, и в результате меня назвали четырехбуквенным словом, так что не стесняйтесь воспринимать это с недоверием); Я считаю полезным выбирать имена тестов, которые отражают поведение, которое я тестирую, а не имя метода. Поэтому не называйте свои тесты testMethod()
, testMethod1()
, testMethod2()
и так далее. Мне нравятся имена типа calculatedPriceIsBasePricePlusTax()
или taxIsExcludedWhenExcludeIsTrue()
, которые указывают на то, какое поведение я тестирую; затем в каждом методе тестирования проверьте только указанное поведение. В большинстве случаев такое поведение включает в себя только один вызов общедоступного метода, но может включать много обращений к частным методам.
Надеюсь, это поможет.