【发布时间】:2019-07-20 15:30:36
【问题描述】:
我正在尝试从 mstest 获取失败的测试用例的错误消息。
我在网上找到了一些使用TestContext的东西,下面是我拥有的代码sn-p。
public static string GetErrorMessageFromTestContext(TestContext testContext) {
BindingFlags privateGetterFlags = BindingFlags.GetField |
BindingFlags.GetProperty |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.FlattenHierarchy;
var m_message = string.Empty;
Type t = testContext.GetType();
if (testContext.CurrentTestOutcome == UnitTestOutcome.Failed)
{
var field = t.GetField("m_currentResult", privateGetterFlags);
object m_currentResult = field.GetValue(testContext);
field = m_currentResult.GetType().GetField("m_errorInfo",
privateGetterFlags);
var m_errorInfo = field.GetValue(m_currentResult);
field = m_errorInfo.GetType().GetField("m_message",
privateGetterFlags);
m_message = field.GetValue(m_errorInfo) as string;
}
return m_message;
}
这个东西应该从失败的案例中返回一条错误消息。但是,在执行该行时:
var field = t.GetField("m_currentResult", privateGetterFlags);
字段被分配了空值。不知道是什么原因,所以我也愿意接受其他解决方案。谢谢!
【问题讨论】: