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