使用 Nunit 测试适配器在 visual studio 2013 中按 class 名称和方法名称进行分组测试

Group test by class name and method name in visual studio 2013 with Nunit test adapter

我在使用 visual studio 测试资源管理器时遇到了这个问题:无法找到 select 测试的方法,我需要 运行:

我有很多测试 TestCaseSource 作为测试资源管理器在许多测试中翻译的输入数据,所以对于我的单一测试方法,我可以有 20-30 个条目。当我开始在我的 class 中进行许多测试时,select 单一方法的所有输入都是痛苦的

我知道我可以使用 Traits,但它们不会呈现为层次结构,也不会嵌套在 class 分组下。

现在我只有 2 个方法合而为一 class 结果是这样的:

其中 select 将所有情况都用于一种方法是痛苦的,无法想象最后的情况,我什至可以使用 20 种这样的方法

有什么方法可以按项目分组测试,然后按 class 分组,然后按方法分组,而不必为每个测试都写 class 吗?

有关完整信息,这是我的代码

public class TestCase
    {
        public static IEnumerable TestCasesIsNumerico
        {
            get
            {
                yield return new TestCaseData("12").Returns(true);
                yield return new TestCaseData("12345678901234567890").Returns(true);
                yield return new TestCaseData("1,2").Returns(true);
                yield return new TestCaseData("1.2").Returns(true);             
                yield return new TestCaseData("1.000,12").Returns(true);
                yield return new TestCaseData("1,000.12").Returns(true);
                yield return new TestCaseData("1.000.000").Returns(true);
                yield return new TestCaseData("1,000,000").Returns(true);
                yield return new TestCaseData("1.000.000.000.000").Returns(true);
                yield return new TestCaseData("1,000,000,000,000").Returns(true);
                yield return new TestCaseData("1.000.000,00").Returns(true);
                yield return new TestCaseData("1,000,000.00").Returns(true);
                yield return new TestCaseData("a").Returns(false);
                yield return new TestCaseData("a120").Returns(false);
                yield return new TestCaseData("12a0").Returns(false);
                yield return new TestCaseData("120a").Returns(false);
                yield return new TestCaseData("01").Returns(false);
                yield return new TestCaseData("1.1.1").Returns(false);
                yield return new TestCaseData("1,1,1").Returns(false);
                yield return new TestCaseData("1.000.12").Returns(false);
                yield return new TestCaseData("1,000,12").Returns(false);
            }
        }

        public static IEnumerable TestCasesValoreNumero
        {
            get
            {
                yield return new TestCaseData("12").Returns(12);
                yield return new TestCaseData("12345678901234567890").Returns(12345678901234567890);
                yield return new TestCaseData("1,2").Returns(1.2);
                yield return new TestCaseData("1.2").Returns(1.2);
                yield return new TestCaseData("1.000,12").Returns(1000.12);
                yield return new TestCaseData("1,000.12").Returns(1000.12);
                yield return new TestCaseData("1.000.000").Returns(1000000);
                yield return new TestCaseData("1,000,000").Returns(1000000);
                yield return new TestCaseData("1.000.000.000.000").Returns(1000000000000);
                yield return new TestCaseData("1,000,000,000,000").Returns(1000000000000);
                yield return new TestCaseData("1.000.000,12").Returns(1000000.12);
                yield return new TestCaseData("1,000,000.12").Returns(1000000.12);
            }
        }
    }

    [TestFixture]
    public class UtilitaTests
    {
        [Test, TestCaseSource(typeof(TestCase), "TestCasesIsNumerico")]
        public bool isValoreNumerico_RitornaVeroSeNumero(object  o)
        {
            decimal d;
            return Utilita.tryValoreNumerico(o, out d);
        }


        [Category("UtilitaTests-isValoreNumerico_RitornaNumeroCorretto")]
        public decimal isValoreNumerico_RitornaNumeroCorretto(object o)
        {
            decimal d;
            Utilita.tryValoreNumerico(o, out d);
            return d;
        }
    }

不幸的是,除了在特征(类别)、测试程序集、类 等您已经找到的顶层进行分组之外,这是不可能的。

这是 Visual Studio Test Explorer 而非 NUnit 的限制。 NUnit 适配器仅向测试 window 提供信息,它不控制任何 UI,因此 NUnit 团队无法改进其工作方式。

我建议前往 Visual Studio UserVoice 并投票或输入问题以给 Test Explorer 一些爱。

您已经知道,但有些人没有意识到您可以在测试资源管理器中更改测试分组 Window。为此,请右键单击测试中的任何节点,然后 select 分组依据。