Best practices to test protected methods with PHPUnit
I found the discussion on [Do you test private method][1] informative.

I have decided, that in some classes, I want to have protected methods, but test them.
Some of these methods are static and short. Because most of the public methods make use of them, I will probably be able to safely remove the tests later. But for starting with a TDD approach and avoid debugging, I really want to test them.

I thought of the following:

  - [Method Object][2] as adviced in [an answer][3] seems to be overkill for this.
  - Start with public methods and when code coverage is given by higher level tests, turn them protected and remove the tests.
  - Inherit a class with a testable interface making protected methods public

Which is best practice? Is there anything else?

It seems, that JUnit automatically changes protected methods to be public, but I did not have a deeper look at it. PHP does not allow this via [reflection][4].


  [1]: http://stackoverflow.com/questions/105007/do-you-test-private-method
  [2]: http://www.refactoring.com/catalog/replaceMethodWithMethodObject.html
  [3]: http://stackoverflow.com/questions/105007/do-you-test-private-method#105021
  [4]: http://php.net/language.oop5.reflection
Best practices to test protected methods with PHPUnit
===

I found the discussion on [Do you test private method][1] informative.

I have decided, that in some classes, I want to have protected methods, but test them.
Some of these methods are static and short. Because most of the public methods make use of them, I will probably be able to safely remove the tests later. But for starting with a TDD approach and avoid debugging, I really want to test them.

I thought of the following:

  - [Method Object][2] as adviced in [an answer][3] seems to be overkill for this.
  - Start with public methods and when code coverage is given by higher level tests, turn them protected and remove the tests.
  - Inherit a class with a testable interface making protected methods public

Which is best practice? Is there anything else?

It seems, that JUnit automatically changes protected methods to be public, but I did not have a deeper look at it. PHP does not allow this via [reflection][4].


  [1]: http://stackoverflow.com/questions/105007/do-you-test-private-method
  [2]: http://www.refactoring.com/catalog/replaceMethodWithMethodObject.html
  [3]: http://stackoverflow.com/questions/105007/do-you-test-private-method#105021
  [4]: http://php.net/language.oop5.reflection