2012-09-27 19 views
8

He PHPUnit 3,7phpunit 3.7: ¿qué pasó con la anotación @assert?

El official announcement menciones algunas anotaciones nuevas (y la reintroducción de una antigua previamente obsoleta), pero d No se menciona la eliminación de @assert. En el changelog for 3.7., @assert no se encuentra en la página

Cuando ejecuto mi código en una clase utilizando el code snippet

<?php 
class MyMathClass 
{ 
    /** 
    * Add two given values together and return sum 
    * @assert (1,2) == 3 
    */ 
    public function addValues($a,$b) 
    { 
     return $a+$b; 
    } 
} 

la salida es

PHPUnit 3.7.1 by Sebastian Bergmann. 



Time: 1 second, Memory: 4.25Mb 

No tests executed! 

con php 3.6. 2

phpunit MyMathClass.php 
PHPUnit 3.6.12 by Sebastian Bergmann. 

. 

Time: 0 seconds, Memory: 2.75Mb 

OK (1 test, 1 assertion) 
+1

Pensé que la anotación '@ assert' solo se usaba para generar esqueletos de prueba, y me parece recordar que Sebastian estaba desaprobando esa característica. Claramente estoy equivocado sobre la primera parte pero. . . –

+1

si ejecuta phpunit 3.6 con '--debug' imprime' Starting test 'MyMathClassTest :: testAddValues'. Parece que ejecuta el generador de esqueletos sobre la marcha. dado que no está documentado, creo que está bien que el responsable renuncie a esta función. –

Respuesta

5

Respondiendo a mi propia pregunta después de hacer una investigación. Y gracias a los comentaristas por ponerme en la pista.

La anotación se ha ido porque se ha movido al paquete opcional PHPUnit_SkeletonGenerator.

En este momento, hay dos cuestiones confusas con esto:

  1. la eliminación de la anotación de la @assert PHPUnit "núcleo"
  2. la documentación no se actualiza correctamente

El registro de cambios es impreciso. Dice (erróneamente):

Se han eliminado los interruptores obsoletos --skeleton-class y --skeleton-test. La funcionalidad ahora es provista por el comando phpunit- skel del paquete PHPUnit_SkeletonGenerator.

Una mejor forma de decir esto sonaría más a esto:

eliminado obsoleta --skeleton de clase y los interruptores de la prueba --skeleton. La funcionalidad ahora es provista por el comando opcional phpunit- skelgen del paquete PHPUnit_SkeletonGenerator. Por lo tanto, la anotación @assert se ha eliminado del núcleo de phpunit. Está disponible después de instalar PHPUnit_SkeletonGenerator a través de PEAR.

Tal vez cambie yo mismo a través de github y notifique a los mantenedores.

+0

+1 y gracias por escribir la respuesta! He visto la pregunta ayer y llegué a la misma conclusión mientras la depuraba fuera de línea. No estaba al tanto de este rompimiento BC (lo siento!) Y mientras tenemos una prueba para esto parece que la prueba simplemente no se ejecutó. No pude encontrar el código que cambió el comportamiento (debido a limitaciones de tiempo) pero si sería tan amable de abrir un ticket con PHPUnit o enviar una solicitud de extracción para los documentos (léame y/o manual) que serían realmente genial :) - Si no me dejas saber y me encargaré yo mismo. --- Para que quede claro: después de instalar Skelgen, ¿funciona para ti como antes? :) – edorian