【问题标题】:Difference between test suite, test case and test category测试套件、测试用例和测试类别之间的区别
【发布时间】:2017-05-19 20:42:40
【问题描述】:

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

但是类别呢?

【问题讨论】:

    标签: junit


    【解决方案1】:

    Test case 是一组用于测试特定执行路径的测试输入、执行条件和预期结果。通常情况下,情况是单一的方法。

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

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

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

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

    【讨论】:

    • 非常好的答案。
    • Nit:不应编写测试用例来“测试特定的执行路径”。它应该被编写来测试特定的需求,理想情况下,不需要任何实现知识。如果您的覆盖率测试表明您的测试没有触及所有代码路径,则说明测试套件不完整(没有测试所有需求),代码有不必要的代码路径,或者规范缺少某些需求。跨度>
    【解决方案2】:

    测试类别就像一个子测试套件。以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
    }
    

    请注意,两个测试套件都指向相同的测试类,但它们将运行不同的测试用例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-15
      • 2017-11-08
      • 2017-12-15
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多