У меня есть модульные тесты, которые ищут файл конфигурации в определенной папке путь определения пути проекта:Как VSOnline Automated Test Runs/Builds отличается от локального?
/// <summary>
/// Gets the project path of the given type.
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string GetProjectPath(Type type)
{
var dll = new FileInfo(type.Assembly.Location);
if (dll.Directory == null || // ...\Solution\Project\bin\Build
dll.Directory.Parent == null || // ...\Solution\Project\bin
dll.Directory.Parent.Parent == null || // ...\Solution\Project
dll.Directory.Parent.Parent.Parent == null) // ...\Solution
{
throw new Exception("Unable to find Project Path for " + type.FullName);
}
// Class Name, Project Name, Version, Culture, PublicKeyTyoken
// ReSharper disable once PossibleNullReferenceException
var projectName = type.AssemblyQualifiedName.Split(',')[1].Trim();
var projectPath = Path.Combine(dll.Directory.Parent.Parent.Parent.FullName, projectName);
if (!Directory.Exists(projectPath))
{
throw new Exception(String.Format("Unable to find Project Path for {0} at {1}", type.FullName, projectPath));
}
return projectPath;
}
Это прекрасно работает на Девых машинах, но когда VSOnline Строить пинает, тест блока выходит из строя, говоря он не может найти путь к проекту. Это заставляет меня полагать, что VSOnline Builds на одной машине, и модульные тесты на другом, или структура каталогов каким-то образом отличается, или модульный тест не имеет прав на чтение файловой системы ...
У кого-либо есть любое понимание того, что может быть проблемой?
Как в стороне, файл конфигурации представляет собой внешнюю зависимость. Я бы подумал насмехаться над этим, чтобы ваши тесты не зависели от этого. –
Я ценю ваш комментарий, @ DanielMann, но я не уверен, что это возможно. Файл конфигурации содержит список файлов Serialized XML, используемых для измечения ответов. – Daryl