以前我会使用:
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?
答案 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?