如何对测试类和测试方法进行分类并选择特定类别以便在nunit中进行测试?

时间:2017-07-20 07:37:16

标签: c# unit-testing visual-studio-2015 automated-tests nunit

是否可以分类测试类或测试方法,例如在 nunit 中表示为BASIC,PERFORMANCE和SIMPLE,然后允许用户决定测试的哪个类别他想跑。 Can the nunit extensions help in this in anyway? 通过示例的解释将是非常值得注意的。 PS:我目前正在使用nunit 2.6.4

2 个答案:

答案 0 :(得分:1)

使用CategoryAttribute将类别应用于测试或灯具。

然后,您可以以各种方式运行它们,具体取决于您使用的跑步者。例如......

  • NUnit 2.6.4控制台运行程序 - 使用命令行上的/include和/或/exclude选项。

  • NUnit 2.6.4 GUI runner - 选择要在gui中运行的类别

  • 在Visual Studio上运行的NUnit VS适配器 - 按特征对测试进行排序,然后选择要运行的类别。

答案 1 :(得分:1)

是的,您可以对类或测试级别的测试进行分类,测试也可以有多个类别。

提到的一个选项是[TestCategory("MyCategory")]路线,但我更喜欢创建新属性,以便我可以选择更“强烈”类型的类别。

示例:

public class FastIntegrationTestAttribute : CategoryAttribute { }

public class LongRunningIntegrationTestAttribute : CategoryAttribute { }

public class NightlyTestAttribute : CategoryAttribute { }

行动中:

[TestFixture, FastIntegrationTest]
public class MyClassThatNeedsTesting
{

    [Test]
    [NightlyTest]
    public void MyTest()
    {
    }

    [Test]
    public void AnotherTest()
    {
    }
}

请注意,fixture属性将该属性应用于所有测试,因此MyTest具有“FastIntegrationTest”和“NightlyTest”属性,其中AnotherTest只具有“FastIntegrationTest”属性。 / p>

根据您的跑步者和框架版本,有多种方法可以运行特定类别的测试。

以dotnetcore中的

为例,你可以这样做:

dotnet test --where "cat == NightlyTest"

resharper测试运行器除了@Charlie提到的方法外,还允许按类别分组