Я использую вспомогательный класс для борьбы с получением основной пути, которые, возможно, захотите получить в моих модульных тестах.
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;
}
}
}
Иногда мое взаимодействие с путями более сложное; Я часто использую центральный класс, который я называю «App», чтобы указать некоторые основные сведения о приложении, такие как его корневая папка, его корневое пространство имен и модуль и т. Д. Классы будут иногда зависеть от существования App, поэтому вместо этого я поставлю init метод в приложении, который использует такой код, как указано выше, для инициализации для тестовых жгутов и вызова этого метода из команды Init в модульном тесте.
(Обновлено)
Старый Ответ
Я нашел, что это помогает для получения произвольных путей доступа к файлам в папке проекта вы намерены проверить (в отличие от файлов в папке Test проекта, который может сделать если вам нужно скопировать вещи).
DirectoryInfo projectDir = new DirectoryInfo(@"..\..\..\ProjectName");
string projectDirPath = projectDir.FullName;
Затем вы можете использовать любую из этих переменных для доступа к тому, что вам нужно от соответствующего проекта. Очевидно, замените «ProjectName» на фактическое название вашего проекта.
Я обнаружил, что мой файл собирается «Project1_UnitTests \ bin \ Debug», тогда как тест пытается найти его под «TestResults \ Username_PCName_datetime \ Out» .. ??? – Greg
за 6 upvotes в комментарии @ Greg, я отредактировал этот ответ и добавил дополнительную информацию, чтобы сделать этот ответ более полным. – javamonkey79
@ javamonkey79 Это не помогает java –