utilizo una clase de ayuda para hacer frente a conseguir básica caminos a los que podría querer acceder en mis Pruebas Unitarias.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Brass9.Testing
{
public static class TestHelper
{
public static string GetBinPath()
{
return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
}
public static string GetProjectPath()
{
string appRoot = GetBinPath();
var dir = new DirectoryInfo(appRoot).Parent.Parent.Parent;
var name = dir.Name;
return dir.FullName + @"\" + name + @"\";
}
public static string GetTestProjectPath()
{
string appRoot = GetBinPath();
var dir = new DirectoryInfo(appRoot).Parent.Parent;
return dir.FullName + @"\";
}
public static string GetMainProjectPath()
{
string testProjectPath = GetTestProjectPath();
// Just hope it ends in the standard .Tests, lop it off, done.
string path = testProjectPath.Substring(0, testProjectPath.Length - 7) + @"\";
return path;
}
}
}
A veces mis interacciones con las rutas son más complejas; A menudo utilizo una clase central que denomino "Aplicación" para indicar algunos detalles básicos sobre la aplicación, como su carpeta raíz, su espacio de nombres y módulo raíz, etc. Las clases a veces dependerán de la existencia de la aplicación, y en su lugar colocaré un init método en la aplicación que usa código como el anterior para inicializarse para los arneses de prueba, y llama a ese método desde el comando Init en una prueba unitaria.
(Actualizado)
respuesta Antiguo
He encontrado que esto ayuda a conseguir caminos arbitrarios para acceder a los archivos en la carpeta del proyecto tiene la intención de probar (en contraposición a los archivos en la carpeta del proyecto de prueba, que puede hacer busywork si necesitas copiar las cosas).
DirectoryInfo projectDir = new DirectoryInfo(@"..\..\..\ProjectName");
string projectDirPath = projectDir.FullName;
Puede utilizar cualquiera de estas variables para acceder a lo que necesite del proyecto relacionado. Obviamente, cambie "ProjectName" por el nombre real de su proyecto.
Estoy descubriendo que mi archivo va a "Project1_UnitTests \ bin \ Debug" mientras que la prueba intenta encontrarlo en "TestResults \ Username_PCName_datetime \ Out" .. ??? – Greg
por las 6 votaciones ascendentes en el comentario de @ Greg, he editado esta respuesta y agregado en la información adicional para que esta respuesta sea más completa. – javamonkey79
@ javamonkey79 Eso no ayuda a java –