2012-03-06 13 views
5

Somos grandes usuarios de NuGet, tenemos 25-30 paquetes que ponemos a disposición en una red compartida.Prueba de un paquete NuGet

Nos gustaría poder probar nuevos paquetes antes de que sean creados y lanzados en las aplicaciones de consumo. Idealmente, esto podría hacerse usando something similar to Maven's snapshot y teniendo un paquete de desarrollo específico (por ejemplo, snapshot functionality).

¿Alguien más ha presentado una forma ideal, razonablemente no hacky, de hacerlo?

Nuestro método preferido es generar los conjuntos de paquetes y luego sobrescribir manualmente los conjuntos en el directorio packages /, es decir, para reemplazar las referencias reales del proyecto, pero eso no parece particularmente limpio.

Actualización:

Utilizamos un servidor de compilación de CI que crea se basa en cada confirmación y tiene una específica activado manualmente NuGet construir que trabaja fuera etiquetada específicamente versiones del código base. No queremos crear una versión NuGet de cada compromiso, pero nos gustaría poder probar un posible candidato en la naturaleza antes de activar la compilación manual del paquete NuGet.

Respuesta

2

Si está utilizando paquetes NuGet para distribuir sus bibliotecas, no debe limitarse a probar solo las bibliotecas. También debe probar los paquetes ellos mismos (si sus binarios están bien pero están instalados incorrectamente, los consumidores aún tienen problemas). El objetivo es mejorar esta experiencia.

Una forma podría ser tener un repositorio CI o QA adicional. El que tiene actualmente es en realidad su repositorio de "producción" que contiene versiones consumibles, consideradas productos terminados de alta calidad.

Yendo más lejos, usted podría tener un flujo promoción lógica de los paquetes (sobre la base de integración continua o incluso usando un enfoque de entrega continua), donde: - cada registro de entrada produce un paquete en su repositorio CI - probadores recoger una El paquete CI para QA y si se encuentra OK lo promociona a un feed QA o al feed Production (lo que prefiera, depende de la calidad de sus pruebas y de qué tan bien esté automatizado)

Hay varias formas de implementar este escenario, utilizando recursos compartidos de red simples, implementaciones internas de NuGet.Server o Gallery, o simplemente use http://myget.org para probarlo con un costo mínimo y cero esfuerzo.

Espero que ayude!

Cheers, Xavier

+0

Somos un equipo de desarrollo de uso interno y, al menos para este requisito, solo después de validar que el ensamblaje está en buen estado. El flujo de trabajo típico es que el desarrollador de aplicaciones encuentra un error en el paquete. El desarrollador del paquete (posiblemente, pero no necesariamente, la misma persona) creará pruebas en el paquete y creará una versión candidata, pero nos gustaría tener una manera elegante de probar el paquete en la aplicación donde se había roto. La instantánea de Maven o la compilación de desarrollo es ideal para este escenario. NuGet no tiene nada tan limpio disponible recién salido de la caja. – Unsliced

+0

Revise este enlace [http://www.arunrana.net/2012/01/testing-nuget-package-before-publishing.html]. La respuesta breve es que puede agregar otro origen de paquete (ruta del archivo) que apunte a sus paquetes "no publicados", luego use la consola del Administrador de paquetes para instalar desde esa ubicación. –

0

terminé escribiendo un marco de pruebas de unidad/integración para resolver un problema de simular. Básicamente, necesitaba verificar el contenido del paquete, las versiones y la información, qué sucedería cuando instalé y desinstalé el paquete, qué versiones eran los ensamblados en la lib, qué bits se construyeron los ensamblajes (x86 o x64) y etc., y lo necesitaba todo para ejecutar sin Visual Studio instalado y en mi máquina de creación (sin cabeza) como una puerta de calidad.

de pie sobre los hombros de gigantes como: Pester, PETools, y SharpDevelop's package management module junté - nuget-test

  1. clonar el proyecto en el directorio de paquetes (donde su.nuspec file y package files are). Si por alguna razón quieres mantener el proyecto nuget-test como un repositorio "git", entonces simplemente elimina "remove nuit nuget-test/.git -Recurse-Force" del siguiente comando.

    git clone https://github.com/nickfloyd/nuget-test.git; remove-item nuget-test/.git -Recurse -Force

  2. Run Setup.ps1 en la raíz del directorio de la prueba Nuget en una instancia 86 de PowerShell.

    PS> .\setup.ps1

  3. pruebas de escritura y colocarlos en el directorio Nuget-test/prueba usando la sintaxis Pester.

  4. Ejecute las pruebas.

    PS> Invoke-Pester

página Proyecto: nuget-test
en GitHub: https://github.com/nickfloyd/nuget-test

espero que esto ayuda a que se acerque a lo que estás tratando de hacer.

Cuestiones relacionadas