2011-01-12 14 views
11

Cuando uno empieza a buscar pruebas de la unidad de PHP, por lo general uno se topa con:PHP Unit Testing without framework ... ¿Posible? ¿Aconsejable?

  1. PHPUnit.
  2. SimpleTest.
  3. Una plétora de blogs que explican cómo usar PHPUnit y SimpleTest.
  4. StackOverflow preguntas sobre PHPUnit y SimpleTest ...

... y creo que se entiende la idea.

Me preguntaba: ¿cómo se puede hacer para probar la unidad con el sencillo PHP? ¿Es eso incluso un esfuerzo sabio?

Supongo que tendré que construir mi propio marco pequeño. Estoy interesado porque quiero tener una mejor comprensión de lo que está sucediendo en mis pruebas unitarias. También me interesa porque creo que una solución ligera y personalizada ejecutará mis pruebas más rápido.

Pregunta de bonificación: ¿Quién es el desvalido? ¿Hay un tercer marco que valga la pena estudiar (para fines de la Academia)?

+2

El aprendizaje es un argumento válido; Aunque no estoy seguro si el rendimiento es uno. Esos marcos no tienen mucha sobrecarga. –

+0

Relacionado: [¿Cuál es el estado de los marcos de prueba de unidades PHP en 2010?] (Http://stackoverflow.com/questions/2408860/whats-the-state-of-php-unit-testing-frameworks-in-2010) –

+0

A PHPUnit no le importa qué marco usa – Gordon

Respuesta

7

La comprobación de unidades es básicamente un conjunto de aserciones.

Consideremos el siguiente caso de prueba PHPUnit:

class MyTest extends PHPUnit_Framework_TestCase { 
    public function testFoo() { 
     $obj = new My; 
     $this->assertEquals('bar', $obj->foo()); 
    } 
} 

Usted puede tener un caso de prueba similar sin usar PHPUnit:

class MyTest { 
    public function testFoo() { 
     $obj = new My; 
     assert("$obj->foo() == 'bar'"); 
    } 
} 

Sin embargo, al hacerlo sin un marco, que tendrá que manualmente cree una instancia del caso de prueba (MyTest) y llame a cada método de prueba manualmente (MyTest :: testFoo, etc.).

El marco (por ejemplo, PHPUnit) no es más que un conjunto de "ayudantes" para hacerlo más fácil y más rápido: generando esqueleto automáticamente; con objetos simulados incorporados, scripts de líneas de comando, etc.

Todavía puede probar la unidad sin un marco, pero al final, probablemente ahorrará más tiempo usando una, porque después de todo, para eso suelen ser los marcos.

2

Mi opinión sería ¿qué tiene de malo la rueda estándar (PHPUnit con toda probabilidad) que justifica el desarrollo de un reemplazo? Después de todo, ¿no es una solución probada la elección más sabia en este caso?

Además, la salida de las herramientas estándar será más fácil de usar si alguna vez desea aprovechar un servidor de Integración continua más adelante. (Por supuesto, puede hacer su propia salida de herramienta en un formato idéntico, pero eso me lleva de vuelta al argumento "por qué reinventar la rueda")

1

He usado SimpleTest hace un año y es muy liviano . Realmente no había mucho más que ofrecerle una forma de cargar automáticamente los paquetes de prueba y afirmar.

Básicamente incluía todas las clases comenzando con "prueba" y llamaría a todos los métodos comenzando con "prueba" dentro de esa clase. Dentro de los métodos puedes afirmar que los resultados son los que esperabas.

Si tuviera que crear su propio marco, le recomiendo encarecidamente que consulte SimpleTest antes. Es muy ligero en comparación con la unidad PHP (si eso es lo que te asusta).

+2

http://stackoverflow.com/questions/34312/simple-test-vs-phpunit –

+0

http://stackoverflow.com/questions/4624093/what-unit-testing-in -php-to-start/4625909 # 4625909 – Gordon

1

Puede escribir pruebas en cualquier idioma sin un marco, pero el código que escribe y que comparte en sus pruebas terminará siendo una especie de mini-framework de todos modos.

Un buen marco de pruebas de unidades tendrá las características comunes que necesita para facilitar las pruebas, como aserciones, simulaciones, códigos, manejo de excepciones y cobertura de códigos.

Pregunta extra: ¿Quién es el desvalido? ¿Hay un tercer marco que valga la pena estudiar (para fines de la Academia)?

Hay perdedores en el espacio de la unidad de pruebas de PHP, por ejemplo Enhance PHP, que es un marco de pruebas de unidad con burla y talones edificada en ella tiene algunas ventajas sobre los grandes jugadores -. Que tiene una buena documentación y es muy rápido para comenzar.