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

时间:2016-03-04 13:34:13

标签: c# unit-testing visual-studio-2013 nunit

我在visual studio test explorer中遇到这个问题:无法找到一种方法来选择我需要运行的测试:

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

我知道我可以使用Traits,但它们不是渲染为层次结构,也不是嵌套在类分组之下。

现在我在一个类中只有两个方法,这就是结果:

Test list

选择单一方法的所有案例是痛苦的,当我甚至可以使用20种方法时,最终无法想象情况

有没有办法按项目分组测试,然后是按类,然后按方法分组,而不必为每次测试编写一个类?

获取完整信息这是我的代码

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;
        }
    }

1 个答案:

答案 0 :(得分:4)

不幸的是,除了您已经找到的最高级别的特征(类别),测试程序集,类等之外,它是不可能的。

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

我建议您前往Visual Studio UserVoice并投票或输入问题,以便给测试资源管理员一些爱。

您已经知道,但有些人并未意识到您可以在“测试资源管理器”窗口中更改测试分组。为此,请右键单击测试中的任何节点,然后选择group by。

Visual Studio Test Explorer