如何在TFS 2017中获取当前的自动化测试运行ID

时间:2018-07-12 15:56:30

标签: c# tfs mstest tfs2017

以前我会使用:

TestContext.Properties["__Tfs_TestRunId__"]

获取正在执行特定测试用例的运行的当前ID。但是在2017年,情况似乎并非如此,因为它返回了一个无效的数字。

通过使用以下代码,我能够转储TestContext的键,并且看起来该参数不再存在。.

private static IEnumerable<DictionaryEntry> SafeCast(IDictionary dictionary)
{
    foreach (DictionaryEntry entry in dictionary)
    {
        yield return entry;
    }
}
var dict = new Dictionary<string, string>();

var dictionaryEntries = SafeCast(TestContext.Properties).Select(_ => new { Key = _.Key.ToString(), _.Value }).ToArray();

using (StreamWriter file = new StreamWriter("dump.txt"))
{
     foreach (var entry in dictionaryEntries)
     {
         file.WriteLine("[{0} {1}]", entry.Key, entry.Value);
         var outputString = string.Format("[{0} {1}]", entry.Key, entry.Value);
         Trace.WriteLine(outputString);
      }
}

这些是当前键:

ResultsDirectory
AgentId
AgentName
TestRunDirectory 
ControllerName 
DataCollectionEnvironmentContext 
TestResultsDirectory 
TestLogsDir 
TestDeploymentDir 
TestRunResultsDirectory 
TestDir 
AgentLoadDistributor 
DeploymentDirectory 
TotalAgents 
TotalAgents 
FullyQualifiedTestClassName 
TestName 

是否可以强制通过TestContext传递运行ID或以其他任何方式获取当前运行ID?

1 个答案:

答案 0 :(得分:0)

在构建期间(功能测试)运行测试时,无法通过MTM运行测试,因此无法获得测试方法中的测试运行ID。

解决方法是您可以在运行设置中指定值,并在测试期间获取该值。

更多信息,您可以参考Supplying Run Time Parameters to Tests

类似的情况:How to retrieve a Test Case ID that is currently running through TFS (vNext) build?