【发布时间】:2012-11-09 18:14:34
【问题描述】:
目标:
我想使用 TestContext.TestName 属性来提取正在运行的测试的名称,以便我的 [TestCleanup] 函数可以在每次测试完成时自动将结果记录到我们的定制结果存储库。
问题:
即使在我的基本“健全性检查”测试项目中也包含 5 个类似于以下结构的测试:
[TestMethod]
public void TestMethodX()
{
Console.WriteLine(String.Format("In Test '{0}'",_ctx.TestName));
Assert.IsTrue(true);
}
使用如下所示的类“初始化程序”,它为我设置了 _ctx:
[ClassInitialize]
public static void ClassInit(TestContext Context)
{
_ctx = Context;
Console.WriteLine("In ClassInit()");
}
[[注意:Console.WriteLines 纯粹是为了让我将鼠标悬停在上面并检查值/属性等]]
_ctx.TestName 永远不会改变测试运行中第一个测试的名称,即如果我要运行所有五个测试('TestMethod1'、'TestMethod2'、'TestMethod3' 等),它们都会记录'TestMethod1' 作为我的结果存储库中的测试名称。
单独运行测试它工作正常,但这对我没有用,因为我需要能够对我的应用程序运行 10's/100's/1000's 测试并让 testContext 处理 testname 或我。
我已经尝试了几次,并且搜索了互联网负载并且没有其他人遇到这个问题,所以我要么是:这个问题是独一无二的,'Google-Fu'技能很差,或者正在做一些真正的事情愚蠢的。希望这是有道理的,有人知道答案。
提前致谢,
安迪
【问题讨论】:
标签: c# .net visual-studio unit-testing mstest