为什么NUnit会忽略我的C#源代码中的测试?

时间:2018-12-01 06:11:35

标签: c# linux unit-testing command-line nunit

我正在尝试使用NUnit框架编写一些测试。测试源是:

namespace UnitTests
{
    // obsolete:  [NUnit.Framework.TestFixture]
    public class NameSorterTests
    {
        public NameSorterTests () {
            System.Console.WriteLine("Creating test object");
        }

        [NUnit.Framework.SetUp]
        public void GetReady()
        {
            System.Console.WriteLine("starting test");
        }

        [NUnit.Framework.TearDown]
        public void Clean()
        {
            System.Console.WriteLine("closing test");
        }

        [NUnit.Framework.Test]
        public void monotonicSequence ()
        {
            System.Console.WriteLine("running test");
            NUnit.Framework.Assert.IsTrue (true);
        }
    }
}

当我尝试运行测试时,请从命令行进行:

$ mcs -r:nunit.framework -target:library UnitTests.cs && nunit-console UnitTests.dll -run:blobby
Note: nunit-console shipped with Mono is deprecated, please use the NUnit 
NuGet package or some other form of acquiring NUnit.
NUnit version 2.4.8
Copyright (C) 2002-2007 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment - 
   OS Version: Unix 4.14.12.6
  CLR Version: 4.0.30319.42000 ( 5.16.0.179 (tarball Fri Nov 30 09:54:19 AEST 2018) )

Selected test: blobby

Tests run: 0, Failures: 0, Not run: 0, Time: 0.032 seconds

注意看似虚假的 -run:blobby 参数;如果我忽略了这一点,那么将省略 Selected test:blobby 行,但其余输出相同。我指定不存在的测试似乎并不在乎。它在做什么 ,如何使它运行测试?

顺便说一句,我不关心弃用警告,只要它现在就可以使用;该练习仅适用于工作申请。

3 个答案:

答案 0 :(得分:0)

对于NUnit 2.4,需要测试类上的[TestFixture]属性。

答案 1 :(得分:0)

您确定[TestFixture]在使用的NUnit中已过时吗?取消注释NameSorterTests上的[TestFixture]属性会发生什么?

答案 2 :(得分:0)

我相信您需要在类上使用TestFixture数据属性。