2011-05-21 8 views
25

Tengo la siguiente estructura del proyecto IntegrationTest ...¿Cómo puedo cargar este archivo en una prueba NUnit?

enter image description here

si quiero usar esos datos de prueba 126.txt en un NUnit Test, ¿Cómo se carga que los datos de archivos sin formato txt?

NOTA: El archivo es -linked- y estoy usando C# (como lo indica la imagen).

aplausos :)

Respuesta

34

Podría especificar en las propiedades del archivo a copiar a la carpeta de salida y el interior de la unidad de prueba:

string text = File.ReadAllText("TestData\\126.txt"); 

Como alternativa, se podría insertar este archivo como una recursos en el conjunto de prueba y luego:

var assembly = Assembly.GetExecutingAssembly(); 
using (var stream = assembly.GetManifestResourceStream("ProjectName.Tests.IntegrationTests.TestData.126.txt")) 
using (var reader = new StreamReader(stream)) 
{ 
    string text = reader.ReadToEnd(); 
} 
+0

por supuesto :) wikid :) Totoally se olvidó de eso. También edité la ruta para incluir la carpeta para que sea técnicamente correcta. Salud. Muy apreciado como siempre –

+1

Para _alternative_ forma que necesita establecer 'Build Action' del archivo como' EmbeddedResource', no solo 'Resource'. Estaba confundido porque 'WPF' lo trata de otra manera: [link] (https://stackoverflow.com/questions/9419611/how-to-refer-to-embedded-resources-from-xaml) – Ghosthack

+1

La primera El método no funciona cuando la prueba está siendo ejecutada por el corredor de prueba de ReSharper. Intenta cargar el archivo desde "AppData \ Local \ JetBrains \ Installations \ ....".Si usa nunit, la solución es usar primero "TestContext.CurrentContext.TestDirectory" en el directorio correcto. – emirhosseini

16

Esta pregunta se responde en la actualidad, pero para los empleados de Google en busca de otras posibilidades:

Si obtiene DirectoryNotFoundException porque la prueba está buscando en C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common... en lugar de en bin\Debug\..., significa que su adaptador de prueba se está ejecutando desde una ruta que no es el directorio de salida de su proyecto de prueba.

Para solucionar esto, se puede conseguir que el directorio de bin\Debug\... buscando el directorio de la DLL de prueba de este modo:

using System.IO; 
using System.Reflection; 

// Get directory of test DLL 
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

// dir is now "C:\...\bin\Debug" or wherever the executable is running from 

Tiré que en una clase estática TestHelpers en el proyecto de prueba para que pueda utilizar en cada prueba que necesita cargar archivos externos.

El código es cortesía de this answer.

20

Si no desea los archivos como ManifestResources, sino solo como un archivo en el sistema. Ver Trouble with NUnit when determining the assembly's directory para obtener más información y la respuesta con el comentario: ^^^^^ ESTA es la respuesta correcta ^^^^^

También es interesante la información de NUnit https://bugs.launchpad.net/nunit-vs-adapter/+bug/1084284/comments/3

Pero aquí está la información rápida:

Path.Combine(TestContext.CurrentContext.TestDirectory, @"Files\test.pdf") 

donde los archivos \ test.pdf es simplemente un archivo en su proyecto de prueba, con el contenido de la acción y la acumulación de copia para copiar el directorio de salida si es más nuevo

Todos los créditos están con las personas en el otro post, pero me tomó un tiempo para encuentra esa respuesta, y esa es la razón por la que estoy agregando la respuesta a esta publicación.

Cuestiones relacionadas