Nunit - TestContext.CurrentContext.Test无效

时间:2011-01-05 09:02:23

标签: c# unit-testing nunit nunit-2.5.9

我正在使用nunit 2.5.9.10348并尝试在TearDown事件中提取当前测试名称,因此我可以为screengrab文件名指定测试名称,但它始终为null(请参阅附图)。 private _context变量确实有TestName,但这对我没用!

有没有人使用这个新的TestContext功能(从2.5.7开始)取得了成功。

alt text

3 个答案:

答案 0 :(得分:3)

从屏幕截图中我看到_context有“TestName”和“Properties”键。但TestAdapter为Name查找键“Test.Name”,为Properties查找“Test.Properties”。因此,TestContext初始化有问题(我认为将错误的数据放到了Remoting.Messaging.CallContext上)。

经过一番调查(见评论): NUnit测试应该由NUnit testig环境运行,以便Context可用。

答案 1 :(得分:0)

我有同样的问题。它发生在TearDown方法中我执行的方法,实际上就是要进行拆解

[TearDown]
public void CleanUp()
{
    TestContext.CurrentContext.Test.FullName; //!=null
    someClassInstance.DoTearDown();
}

class SomeClass
{
     public void DoTearDown()
     {
          TestContext.CurrentContext.Test.FullName; //==null
     }
}

我不知道为什么,但似乎是这样。是你的情况吗?

更新:现在我看了截图,所以不是你的情况:)。

答案 2 :(得分:0)

与R#test runner相同的问题。刚刚下载了NUnit源代码,并在TestAdapter中添加了一个变通方法,使其与r#

一起使用
        public string Name
        {
            get
            {
                return (_context["Test.Name"] ?? _context["TestName"]) as string;
            }
        }