У меня есть объект ITestCaseResult
, и я не могу понять, как извлечь из него информацию о тестовом классе. Объект содержит имя тестового метода в свойстве TestCaseTitle
, но в нашей базе кода имеется много дубликатов, и я хотел бы получить дополнительную информацию.В TFS API, как получить полное имя класса для данного теста?
Предполагая, что у меня есть Foo.Bar
сборки с классом Baz
и методом ThisIsATestMethod
, я в настоящее время имею доступ только к ThisIsATestMethod
информации из заголовка в, но я хотел бы получить Foo.Bar.Baz.ThisIsATestMethod
.
Как это сделать, используя API TFS?
Вот некоторые урезанная код:
var def = buildServer.CreateBuildDetailSpec(teamProject.Name);
def.MaxBuildsPerDefinition = 1;
def.QueryOrder = BuildQueryOrder.FinishTimeDescending;
def.DefinitionSpec.Name = buildDefinition.Name;
def.Status = BuildStatus.Failed | BuildStatus.PartiallySucceeded | BuildStatus.Succeeded;
var build = buildServer.QueryBuilds(def).Builds.SingleOrDefault();
if (build == null)
return;
var testRun = tms.GetTeamProject(teamProject.Name).TestRuns.ByBuild(build.Uri).SingleOrDefault();
if (testRun == null)
return;
foreach (var outcome in new[] { TestOutcome.Error, TestOutcome.Failed, TestOutcome.Inconclusive, TestOutcome.Timeout, TestOutcome.Warning })
ProcessTestResults(bd, testRun, outcome);
...
private void ProcessTestResults(ADBM.BuildDefinition bd, ITestRun testRun, TestOutcome outcome)
{
var results = testRun.QueryResultsByOutcome(outcome);
if (results.Count == 0)
return;
var testResults = from r in results // The "r" in here is an ITestCaseResult. r.GetTestCase() is always null.
select new ADBM.Test() { Title = r.TestCaseTitle, Outcome = outcome.ToString(), ErrorMessage = r.ErrorMessage };
}
Замечательно, это очень хорошо работает для моего инструмента. Большое спасибо. – Vache