使用TestDriven.NET和NUnit在测试类中运行所有测试

时间:2012-07-02 15:55:36

标签: visual-studio-2010 unit-testing nunit testdriven.net

注意:我正在为此项目使用TestDriven.NET 3.0.2749和NUnit 2.6.0.12051。

我已经安装了TestDriven.NET和NUnit,并试图通过右键单击上下文菜单让TestDriven.NET在测试类中运行所有测试。

来自TestDriven.NET文档:

  

如果选择了代码编辑器窗口,则执行的测试将由插入符的位置决定;通过右键单击测试方法内的任何位置并选择“Run Test(s)”来执行单个测试,如图2所示;测试夹具中的所有测试都是通过右键单击一个类(但在任何方法之外)并选择“Run Test(s)”来执行的;通过右键单击命名空间内部并选择“Run Test(s)”来执行命名空间中的所有测试。

我可以使用右键单击上下文菜单成功运行特定的测试方法,NUnit GUI运行器将成功运行给定类的所有测试,但我想使用快速访问TestDriven.NET为此任务提供的我正在开发。

当我将插入符号置于测试方法之外时,我收到以下错误:

  

目标类型不包含已知测试框架或“主要”方法的测试。

更新1:添加了示例代码。

要测试的示例代码:

namespace TDDN.Framework
{
    public class ExampleClass
    {
        public ExampleClass() { }

        public Int32 Add(Int32 x, Int32 y)
        {
            return x + y;
        }

        public Int32 Subtract(Int32 x, Int32 y)
        {
            return x - y;
        }
    }
}

单元测试:

using NUnit.Framework;
using TDDN.Framework;

namespace TDDN.UnitTests
{
    [TestFixture] // Cursor caret placed here results in error above.
    public class ExampleClassTests
    {
        [Test] // Cursor caret placed here works.
        public void Add_SumTwoIntegers_SumReturned()
        {
            ExampleClass exampleClass = new ExampleClass();

            Assert.AreEqual(10, exampleClass.Add(5, 5));
        }

        [Test] // Cursor caret placed here works also.
        public void Subtract_SubtractTwoIntegers_DifferenceReturned()
        {
            ExampleClass exampleClass = new ExampleClass();

            Assert.AreEqual(5, exampleClass.Subtract(10, 5));
        }
    }
}

2 个答案:

答案 0 :(得分:16)

我在使用相同版本的TestDriven.NET和NUnit(3.0.2749和2.6.0.12051)时遇到了这个问题。

问题是TestDriven.NET 3.0不支持NUnit 2.6,因此它无法识别NUnit [Test]和[TestFixture]属性。因此,TestDriven.NET仍将运行您的个人测试功能,但作为Ad Hoc(在测试时显示在Pass / Fail / Skip消息的末尾)。

我能够通过安装更新​​版本的TestDriven.NET(3.3 Beta 2)来解决这个问题,它完全支持NUnit 2.6(参见:https://groups.google.com/d/msg/nunit-discuss/pTCDx2_L8jU/TlpULzE36wEJ)现在你应该可以运行所有的测试了立即使用夹具并在测试输出结束时显示(NUnit 2.6.0)。

答案 1 :(得分:0)

我在插入符号展示位置上有完全相同的错误消息和类似行为。

我已经拥有最新版本的TestDriven.Net。

我的问题是我的新TestClass没有指定类别并且已被过滤掉(工具 - > TestDriven.Net - >一般 - >类别 - >包括类别中的测试)。

所以只需指定正确的类别就可以解决我的问题。

这是相同的错误消息,但是另一个问题和解决方案。