NUnit 2.6.2 TestContext.CurrentContext始终为null

时间:2013-08-30 08:34:03

标签: c# tdd nunit nunit-2.6.2

我正在尝试使用NUnit 2.6.2的TestContext.CurrentContext,但它总是为空。

我想要的是一个带有测试结果的输出,但是如果我运行以下代码,我总是在NullReferenceException方法中获得TearDown。 Test和Result中的所有属性都抛出了异常。

[TestFixture]
public class UtilitiesTests
{
  [TearDown]
  public void TearDown()
  {
    //using console here just for sake of simplicity. 
    Console.WriteLine(String.Format("{0}: {1}", TestContext.CurrentContext.Test.FullName, TestContext.CurrentContext.Result.Status));
  }

  [Test]
  public void CleanFileName()
  {
    var cleanName = Utilities.CleanFileName("my &file%123$99\\|/?\"*:<>.jpg");
    Assert.AreEqual("my-efile12399---.jpg", cleanName);
  }
}

我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

根据此discussion,您必须确保使用正确版本的NUnit testrunner执行。版本必须是NUnit 2.6.2。

尝试使用正确版本的nunit-console运行测试。

更新:我确实在VS2012中设置了一个新项目,并使用NuGet添加了NUnit 2.6.2和NUnit.Runners 2.6.2。使用Resharper Testrunner我没有得到任何错误但也没有控制台输出,所以我确实从NUnit.exe运行了<project-folder>\packages\NUnit.Runners.2.6.2\tools\

这是我收到的输出:

enter image description here

结果看起来不错。 我在上面运行了你的示例代码。

但是,我必须修改你的代码才能运行它:

using System;
using NUnit.Framework;

[TestFixture]
public class UtilitiesTests
{
    [TearDown]
    public void TearDown()
    {
        //using console here just for sake of simplicity. 
        Console.WriteLine(String.Format("{0}: {1}", TestContext.CurrentContext.Test.FullName, TestContext.CurrentContext.Result.Status));
    }

    [Test]
    public void CleanFileName()
    {
        var cleanName = "my &file%123$99\\|/?\"*:<>.jpg";
        Assert.AreEqual("my &file%123$99\\|/?\"*:<>.jpg", cleanName);
    }
}

您应该尝试再次使用NUnit.exe运行测试,但在验证帮助中有正确的版本之前 - &gt;关于NUnit ......

我的样子如下:

enter image description here