Junit 测试套件、测试用例和测试类别之间的差异

Junit 测试套件、测试用例和测试类别之间的差异,junit,Junit,测试套件、测试用例和测试类别之间的区别是什么。 我找到了部分答案 但是类别呢?测试类别就像一个子测试套件。举个例子。一个类文件,您将有多个测试用例。测试套件是要运行的测试类的分组。测试类别是测试用例的子分组。您可以在类文件中的某些测试用例中放置注释,并创建指向同一测试类的测试套件,但过滤其中一个套件以仅测试某些类别。文档中的示例: public interface FastTests { /* category marker */ } public interface SlowTests { /

测试套件、测试用例和测试类别之间的区别是什么。 我找到了部分答案


但是类别呢?

测试类别就像一个子测试套件。举个例子。一个类文件,您将有多个测试用例。测试套件是要运行的测试类的分组。测试类别是测试用例的子分组。您可以在类文件中的某些测试用例中放置注释,并创建指向同一测试类的测试套件,但过滤其中一个套件以仅测试某些类别。文档中的示例:

public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }

public class A {
  @Test
  public void a() {
    fail();
  }

  @Category(SlowTests.class)
  @Test
  public void b() {
  }
}

@Category({SlowTests.class, FastTests.class})
public class B {
  @Test
  public void c() {

  }
}

@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public class SlowTestSuite {
  // Will run A.b and B.c, but not A.a
}

@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@ExcludeCategory(FastTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public class SlowTestSuite {
  // Will run A.b, but not A.a or B.c
}
请注意,这两个测试套件指向相同的测试类,但它们将运行不同的测试用例。

是为测试特定执行路径而开发的一组测试输入、执行条件和预期结果。通常情况下,案例是一种单一的方法

是相关测试用例的列表。套件可能包含特定于所包含案例的通用初始化和清理例程

测试类别/组是一种标记单个测试用例并将它们分配到类别的方法。对于类别,您不需要维护测试用例列表

测试框架通常提供一种方法来指定在给定测试运行中包括或排除哪些类别。这允许您在不同的测试套件中标记相关的测试用例。当您需要禁用/启用具有公共依赖项(API、库、系统等)或属性(慢、快案例)的案例时,这非常有用

据我所知,测试组和测试类别是不同框架中使用的同一概念的不同名称:

  • 少年
  • PHPUnit中的注释
  • 在MSTest中

回答得很好。