9

我正在使用 nunit 2.5.9.10348 并尝试在 TearDown 事件中提取当前测试名称,以便我可以为屏幕抓取文件名分配测试名称,但它始终为空(参见附图)。私有 _context 变量确实有 TestName 但这对我没有用!

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

替代文字

4

3 回答 3

3

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

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

于 2011-01-05T09:58:58.063 回答
0

我遇到过同样的问题。它发生在我在 TearDown 方法中执行的方法中,该方法实际上是为了进行拆卸

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

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

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

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

于 2011-01-05T09:19:07.663 回答
0

R# 测试运行器也有同样的问题。刚刚下载了 NUnit 源代码并在 TestAdapter 中添加了一个解决方法以使其与 r# 一起使用

        public string Name
        {
            get
            {
                return (_context["Test.Name"] ?? _context["TestName"]) as string;
            }
        }
于 2011-01-27T22:43:21.477 回答