C# NUnit 2.6.2 TestContext.CurrentContext始终为空

C# NUnit 2.6.2 TestContext.CurrentContext始终为空,c#,tdd,nunit,nunit-2.6.2,C#,Tdd,Nunit,Nunit 2.6.2,我试图使用NUnit 2.6.2的TestContext.CurrentContext,但它总是空的 我想要的是测试结果的输出,但是如果我运行以下代码,我总是在TearDown方法中得到NullReferenceException。 测试和结果中的所有属性都会引发异常 [TestFixture] public class UtilitiesTests { [TearDown] public void TearDown() { //using console here just

我试图使用NUnit 2.6.2的
TestContext.CurrentContext
,但它总是空的

我想要的是测试结果的输出,但是如果我运行以下代码,我总是在
TearDown
方法中得到
NullReferenceException
。 测试和结果中的所有属性都会引发异常

[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);
  }
}
[TestFixture]
公共类实用性测试
{
[撕裂]
公共无效拆卸()
{
//为了简单起见,在这里使用控制台。
WriteLine(String.Format(“{0}:{1}”,TestContext.CurrentContext.Test.FullName,TestContext.CurrentContext.Result.Status));
}
[测试]
公共文件名()
{
var cleanName=Utilities.CleanFileName(“我的&file%123$99\\\\\/?\”*:.jpg”);
Assert.AreEqual(“my-efile12399---.jpg”,cleanName);
}
}
我可能做错了什么?

根据这一点,您必须确保使用正确版本的NUnit testrunner执行。该版本必须是NUnit 2.6.2

尝试使用正确版本的nunit控制台运行测试

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

这是我收到的输出:

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

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

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.Framework;
[测试夹具]
公共类实用性测试
{
[撕裂]
公共无效拆卸()
{
//为了简单起见,在这里使用控制台。
WriteLine(String.Format(“{0}:{1}”,TestContext.CurrentContext.Test.FullName,TestContext.CurrentContext.Result.Status));
}
[测试]
公共文件名()
{
var cleanName=“我的&file%123$99\\\\\/?\”*:.jpg”;
Assert.AreEqual(“我的&file%123$99\\\\/?\”*:.jpg”,cleanName);
}
}
您应该再次尝试使用NUnit.exe运行测试,但在确认您在帮助->关于NUnit中拥有正确的verison之前

我的看起来像这样:

根据这一点,您必须确保使用正确版本的NUnit testrunner执行。该版本必须是NUnit 2.6.2

尝试使用正确版本的nunit控制台运行测试

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

这是我收到的输出:

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

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

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.Framework;
[测试夹具]
公共类实用性测试
{
[撕裂]
公共无效拆卸()
{
//为了简单起见,在这里使用控制台。
WriteLine(String.Format(“{0}:{1}”,TestContext.CurrentContext.Test.FullName,TestContext.CurrentContext.Result.Status));
}
[测试]
公共文件名()
{
var cleanName=“我的&file%123$99\\\\\/?\”*:.jpg”;
Assert.AreEqual(“我的&file%123$99\\\\/?\”*:.jpg”,cleanName);
}
}
您应该再次尝试使用NUnit.exe运行测试,但在确认您在帮助->关于NUnit中拥有正确的verison之前

我的看起来像这样:


您是如何运行测试的?我正在使用coderush。我也尝试了Nunit Gui。同样的行为我猜
CurrentContext.Test
Setup
TearDown
中不可用。您确定
CurrentContext
为null并且不是它的一个属性吗?上下文不为null,而属性为空。我发现了一些在拆卸中使用它的示例,但是使用了nunit 2.5。可能在2.6中不再工作了。您如何运行测试?我使用了coderush。我也尝试了nunit Gui。我猜相同的行为是
CurrentContext.Test
设置中不可用
拆卸
中不可用。您确定
CurrentContext>
为空且不是它的属性之一?上下文不是空的,而属性是空的。我在teardown中发现了一些使用它的示例,但是使用了nunit 2.5。可能在2.6中不再有效。正如我在注释中所写的,我也尝试了使用2.6.2的nunit GUI,但没有成功。请参阅上面的注释。我能够解决问题。我成功了当然是关于2.6.2,但是dll,从nuget那里,从2.6.2开始,而gui是2.6.1。所以我删除并重新安装了Everything,现在它可以工作了。非常感谢我错过了一个简单的东西,因为我在评论中写道,我也尝试了使用2.6.2的NUnit gui,但没有运气。请看我上面的评论。我能够解决问题。我确信t他是2.6.2,但是dll,来自nuget,其中来自2.6.2,而gui是2.6.1。所以我删除并重新安装了everithing,现在它可以工作了。非常感谢,我错过了一件简单的事情