【发布时间】:2017-05-19 20:42:40
【问题描述】:
测试套件、测试用例和测试类别之间有什么区别。 我找到了部分答案here
但是类别呢?
【问题讨论】:
标签: junit
测试套件、测试用例和测试类别之间有什么区别。 我找到了部分答案here
但是类别呢?
【问题讨论】:
标签: junit
Test case 是一组用于测试特定执行路径的测试输入、执行条件和预期结果。通常情况下,情况是单一的方法。
Test suite 是相关测试用例的列表。套件可能包含特定于所包含案例的通用初始化和清理例程。
测试类别/组是一种标记单个测试用例并将它们分配给类别的方法。使用类别,您无需维护测试用例列表。
测试框架通常提供一种方法来指定在给定的测试运行中包含或排除哪些类别。这允许您在不同的测试套件中标记相关的测试用例。当您需要禁用/启用具有共同依赖项(API、库、系统等)或属性(慢、快案例)的案例时,这很有用。
据我所知,测试组和测试类别是不同框架中使用的同一概念的不同名称:
【讨论】:
测试类别就像一个子测试套件。以documentation 为例。一个类文件,您将有多个测试用例。测试套件是您要运行的一组测试类。测试类别是测试用例的子组。您可以在类文件中的某些测试用例处添加注释,并创建指向同一测试类的测试套件,但过滤其中一个套件以仅测试某些类别。文档中的示例:
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
}
请注意,两个测试套件都指向相同的测试类,但它们将运行不同的测试用例。
【讨论】: