2011-09-07 43 views
7

Estoy utilizando el corredor integrado de TeamCity NUnit para ejecutar las pruebas almacenadas en archivos .DLL.FileNotFoundException cuando se ejecutan las pruebas de NUnit de TeamCity

Mis .DLL hacen referencia a otras DLL que están presentes en la misma carpeta.

Al ejecutar estos, obtengo una excepción FileNotFoundException para los archivos DLL a los que se hace referencia.

¿Cómo puedo solucionar esto? Estoy pensando que quizás el corredor de TC NUnit está utilizando algún otro directorio como la carpeta de ejecución de la aplicación principal, impidiendo que los archivos que realmente residen cerca de la DLL de prueba no se carguen correctamente, pero aún no puede probar esta afirmación ...

¿Alguien más ha encontrado este comportamiento?

Respuesta

9

Aceptar el problema está resuelto y, realmente tonto y vergonzoso:

he puesto el corredor de prueba NUnit a ejecutar estas pruebas:

**/*.Tests.dll 

Esto significa que va a incluir pruebas de /bin/Debug/ y también de otras carpetas, como obj/

En estas carpetas, no se incluyen referencias, por supuesto, haciendo que las mismas pruebas se ejecuten dos veces y algunas de ellas fallen, por supuesto.

1

Las rutas están relacionadas con el directorio de comprobación de compilación, no a ningún directorio de trabajo. Si necesita otras rutas, use la sintaxis %reference% para referirse a la propiedad TeamCity con una ruta de directorio. ¿Lo ejecutas bajo Windows? ¿Usas TeamCity 6.5?

Si eso no ayuda, alimentación libre de ponerse en contacto con [email protected]

+0

Actualmente estoy usando 6.5, Windows, sí. Sé que los caminos son relativos, esa fue solo una explicación lógica que estaba usando para tratar de entender por qué está fallando. Si Dll A hace referencia a Dll B (ambos en el mismo directorio), ¿qué motivo puede hacer que el iniciador NUnit incorporado falle al encontrar Dll B? –

0

En mi caso, la DLL faltante era una biblioteca nativa y no se pudo cargar porque había una versión incorrecta del tiempo de ejecución de VC instalada en el agente de compilación. Mi solución fue agregar DLL de tiempo de ejecución (ubicadas en 'C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ VC \ redist \ x86 \ Microsoft.VC110.CRT') directamente en el proyecto (compilar acción = Contenido, copiar a directorio de salida = Copiar siempre). Esto también hace que la instalación sea más amigable.

Espero que esto ayude.

Cuestiones relacionadas