¿Cómo escribir una aserción PHPUnit personalizada que se comporte como una aserción incorporada?

¿Cómo puedo escribir una aserción personalizada, comoassertFoo($expected, $actual), ¿se comporta como las aserciones integradas con respecto al error "seguimiento de pila"?

Actualmente tengo el siguiente método definido (dentro de una clase que se extiendePHPUnit_Framework_TestCase):

public static function assertFoo($expected, $actual) {
    self::assertEquals($expected, $actual); 
}

Si llamo a esto desde una prueba y la prueba falla, obtengo dos elementos en la pila de llamadas:

1) PreferencesTest::testSignupTeacher
Failed asserting that 5 matches expected 3.

/vagrant/myproject/tests/integration/PreferencesTest.php:17
/vagrant/myproject/tests/integration/PreferencesTest.php:136

La línea 17 es dondeassertFoo() llama a la incorporadaassertEquals() y falla; la línea 136 está ahíassertFoo() se llama.

Si cambio la prueba para llamarassertEquals() directamente, solo consigo uno:

1) PreferencesTest::testSignupTeacher
Failed asserting that 3 is true.

/vagrant/myproject/tests/integration/PreferencesTest.php:136

Hay algodocumentación en el manual, pero no parece cubrir esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta