深入探索:单元测试之Categories
博客专区 > 灯-塔 的博客 > 博客详情
深入探索:单元测试之Categories
灯-塔 发表于3个月前
深入探索:单元测试之Categories
  • 发表于 3个月前
  • 阅读 5
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 从给定的一组测试类集,**Categories** runner 仅仅是运行类 和 方法 ,他们都会被**@IncludeCategory ** 注解标记分类,或被 category 的子类型标记。 类和接口都能被 用于 category 。分类的作品,如果你说是@IncludeCategory(SuperClass.class), 那么测试被标记为 @Category({SubClass.class}) 将会被运行。

相关文章

Categories 的使用

从给定的一组测试类集,Categories runner 仅仅是运行类 和 方法 ,他们都会被**@IncludeCategory ** 注解标记分类,或被 category 的子类型标记。 类和接口都能被 用于 category 。分类的作品,如果你说是@IncludeCategory(SuperClass.class), 那么测试被标记为 @Category({SubClass.class}) 将会被运行。

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
}

使用 Maven 整合categories

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <groups>com.example.FastTests,com.example.RegressionTests</groups>
      </configuration>
    </plugin>
  </plugins>
</build>

使用 Gradle整合categories

test {
    useJUnit {
        includeCategories 'org.gradle.junit.CategoryA'
        excludeCategories 'org.gradle.junit.CategoryB'
    }
}

使用 SBT categories

SBT's junit-interface 允许特定的 JUnit categories 例如: --include-categories=<CLASSES> 和 --exclude-categories=<CLASSES>.

categories 的典型用法

Categories 常用于在测试中添加元数据。

常见的分类用法是: 自动测试的类型: UnitTests(单元测试), IntegrationTests(集成测试), SmokeTests(冒烟测试), RegressionTests(回归测试), PerformanceTests(性能测试) ... 测试执行快慢: SlowTests, QuickTests 在CI的哪部分构建测试应该被执行: NightlyBuildTests(每日构建的测试) 测试状态: UnstableTests(不稳定测试), InProgressTests(进行测试) 这也用于添加特定于项目的元数据,如项目的哪些特性被测试覆盖。

看到JUnit在GitHub托管项目类别用途: See usages of Junit Categories on github hosted projects

参考

Categories javadoc : https://github.com/junit-team/junit4/wiki/Categories

标签: JUnit
共有 人打赏支持
粉丝 3
博文 26
码字总数 44148
×
灯-塔
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: