Pregunta

Me pregunto cómo la par de los usuarios de Delphi aquí estamos haciendo pruebas de unidad, si alguna?Hay algo que se integra con el IDE que he encontrado que funciona bien?Si no, ¿cuáles son las herramientas que uso y ¿tiene o sabe de ejemplo de mini-proyectos que demuestran cómo funciona todo?

Actualización:

Se me olvidó mencionar que estoy usando BDS 2006 Pro, aunque de vez en cuando caer en Delphi 7, y, por supuesto, otros pueden ser el uso de otras versiones.

¿Fue útil?

Solución

DUnit es un xUnit tipo de unidad en el marco de pruebas para ser utilizado con win32 Delphi.Desde Delphi 2005 DUnit está integrada a una certan punto en el IDE.Otros DUnit herramientas de integración para el IDE de Delphi se pueden encontrar aquí.DUnit viene con documentación con ejemplos.

Otros consejos

Hay algunos add-ons para DUnit, tal vez esto se merece una nueva entrada sobre ESO.Dos que me puede poner en la lista ahora se

  1. FastMM4 integración:Las pruebas de unidad detectará automáticamente las pérdidas de memoria (y otras cosas), trabaja con DUnit 9.3 y nuevos
  2. OpenCTF es un componente de la prueba marco', basada en DUnit, se crea las pruebas de forma dinámica para todos los componentes del proyecto las formas, los marcos y los módulos de datos, y prueba el uso de reglas personalizadas (open source)

Puedes echar un vistazo en la unidad de pruebas de las clases disponibles en nuestro SynCommons de código abierto de la unidad de.Se utiliza en nuestro Open-Source marco para todas las pruebas de regresión.Quizás no es la mejor, pero vale la pena echar un vistazo.

Ver http://blog.synopse.info/post/2010/07/23/Unit-Testing-light-in-Delphi

Con el fin de implementar una unidad de prueba, que acaba de declarar un nuevo caso de prueba mediante la creación de una clase como esta:

type
  TTestNumbersAdding = class(TSynTestCase)
  published
    procedure TestIntegerAdd;
    procedure TestDoubleAdd;
  end;

procedure TTestNumbersAdding.TestDoubleAdd;
var A,B: double;
    i: integer;
begin
  for i := 1 to 1000 do
  begin
    A := Random;
    B := Random;
    CheckSame(A+B,Adding(A,B));
  end;
end;

A continuación, puede crear una prueba de traje, y ejecutarlo.

En el por-venir 1.13 versión, hay también un nuevo mecanismo de registro con el seguimiento de la pila de cualquier excepción y tal, como MadExcept, el uso de .mapa de contenido del archivo como fuente.

Ahora es utilizado por la unidad de pruebas de clases, por lo que cualquier falla creará una entrada en el registro con la línea de código fuente, y el seguimiento de la pila:

C:\Dev\lib\SQLite3\exe\TestSQL3.exe 0.0.0.0 (2011-04-13)
Host=Laptop User=MyName CPU=2*0-15-1027 OS=2.3=5.1.2600 Wow64=0 Freq=3579545
TSynLogTest 1.13 2011-04-13 05:40:25

20110413 05402559 fail  TTestLowLevelCommon(00B31D70) Low level common: TDynArray "" stack trace 0002FE0B SynCommons.TDynArray.Init (15148) 00036736 SynCommons.Test64K (18206) 0003682F SynCommons.TTestLowLevelCommon._TDynArray (18214) 000E9C94 TestSQL3 (163) 

La diferencia entre una prueba de traje, sin registro y una prueba de traje con el registro sólo es este:

procedure TSynTestsLogged.Failed(const msg: string; aTest: TSynTestCase);
begin
  inherited;
  with TestCase[fCurrentMethod] do
    fLogFile.Log(sllFail,'%: % "%"',
      [Ident,TestName[fCurrentMethodIndex],msg],aTest);
end;

El mecanismo de registro que se puede hacer mucho de lo que acaba de registro de la prueba:usted puede registro de llamadas recursivas de métodos, seleccione la información que desee que aparezca en los registros, perfil de la aplicación del lado del cliente, la escritura propiedades publicadas, TList o TCollection contenido como JSON en el contenido del registro, y así sucesivamente...

La primera vez que el .archivo de mapa de lectura, una .el mab se crea el archivo, y contendrá toda la información de símbolos necesarios.Usted puede enviar el .mab archivo con el .exe a su cliente, o incluso integrar su contenido en el .exe.Este .mab archivo está optimizado:una .mapa de 927,984 bytes comprime en un 71,943 .mab archivo.

Por lo que esta unidad podría ser reconocido como hijo natural de DUnit y MadExcept de la boda, en el más puro OpenSource.:)

Información adicional disponible en nuestro foro.Siéntase libre de preguntar.Comentarios y peticiones de características son bienvenidos!Obras de Delphi 6 hasta XE.

DUnit2 está disponible a partir de http://members.optusnet.com.au/~mcnabp/

DUnit2 se modifica con más regularidad que el original dunit.También funciona en Delphi 2009.

Probar: http://sourceforge.net/projects/dunit2/ - se movió como el autor original de Pedro McNab falleció hace varios años.Todavía algo de actividad en el dunit lista de correo.

Hay un nuevo marco de pruebas unitarias para las modernas versiones de Delphi en el desarrollo: https://github.com/VSoftTechnologies/DUnitX

Por lo general, crear un proyecto de prueba de Unidad (Archivo->Nuevo->Otros->Unidad de Prueba->Proyecto de Prueba).Contiene las cosas que necesitan, así que ha sido bastante buena hasta ahora.

Yo uso delphi 2007 así que realmente no sé si esto está disponible en 2006.

Softonic unidad de pruebas de la lógica de código mediante el uso de DUnit y uso de la cobertura del código del analizador incluido en AQTime para comprobar que todos los caminos a través del código se ejecutan las pruebas.

Tenemos dos enfoques, en primer lugar hemos Dunit pruebas que se ejecutan comprar los desarrolladores de estos asegúrese de que el código que ha sido cambiado todavía funciona como antes.El otro enfoque es el uso de CruiseControl.NET para construir ejecutables y, a continuación, ejecute el dunit pruebas cada vez que se realiza un cambio, para asegurarse de que no hay consecuencias no deseadas del cambio.

Mucho de nuestro código no tiene pruebas, por lo que las pruebas automáticas son un caso de desarrollo continuo para asegurar nuestras aplicaciones funcionen como pensamos que deberían.

Hemos tratado de utilizar DUnit con Delphi 5, pero no funcionó bien.Especialmente si usted es la implementación de interfaces COM, hemos encontrado muchas dependencias para la instalación de toda la infraestructura de prueba.No sé si la prueba ha mejorado en las versiones más recientes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top