privateやprotectedメソッドをテストするのにつまずきました

で、こんなふうにしてみた…
HogeHelperのprotectedメソッド_taiGet()をテストするとします。


public $HogeRenderer = null;
public function setUp () {
$Controller = new Controller();
$View = new View($Controller);
$this->HogeRenderer = new HogeHelper($View);
以下略
で、テストではこんなふうに

public function test_taiGet () {
$ref = new ReflectionMethod('HogeHelper', '_taiGet');
$ref->setAccessible(true);

$this->assertEqual(
'tai',
$ref->invoke($this->HogeRenderer, 'ebi'))
);
以下略

と、しているわけですが、もっとなにかスマートな方法はないでしょうかね。

それから…privateやpublicに関係なくpreg_replace_callbackを使っているメソッドを複数回実行すると一回目は成功するが二回目以後が Fatal error になるのはなぜだろう?