目标:
我想使用TestContext.TestName属性来提取正在运行的测试的名称,以便我的[TestCleanup]函数可以在每个测试完成时自动将结果记录到我们的定制结果存储库中.
问题:
即使在我的基本"健全性检查"测试项目中,其中包含5个类似于以下结构的测试:
[TestMethod]
public void TestMethodX()
{
Console.WriteLine(String.Format("In Test '{0}'",_ctx.TestName));
Assert.IsTrue(true);
}
Run Code Online (Sandbox Code Playgroud)
使用下面的类'初始值设定项'为我设置_ctx:
[ClassInitialize]
public static void ClassInit(TestContext Context)
{
_ctx = Context;
Console.WriteLine("In ClassInit()");
}
Run Code Online (Sandbox Code Playgroud)
[[注意:Console.WriteLines纯粹是为了我将鼠标悬停在上面并检查值/属性等]]
该_ctx.TestNameNEVER从试验运行,即第一测试的名称变化,如果我是运行所有五个测试("TestMethod1","TestMethod2","TestMethod3",等等),他们所有的日志"TestMethod1"作为他们的测试名在我的结果库中.单独运行测试它工作正常,但这对我没用,因为我需要能够对我的应用程序运行10's/100's/1000的测试并让testContext处理testname或我.
我现在已经尝试了几次并且搜索了互联网负载并且没有其他任何人遇到这个问题,所以我要么:这个问题独一无二,有'Google-Fu'技能差,或者做一些真正愚蠢的事情.希望这是有道理的,有人有答案.
提前致谢,
安迪