[scala断言专栏]--标记你的测试

本文介绍如何使用 ScalaTest 的标记功能,通过自定义标签来组织和过滤测试案例,实现测试的灵活管理和快速定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

英文原文:

http://www.scalatest.org/user_guide/tagging_your_tests


标记你的测试

ScalaTest允许您定义任意测试类别,将“标记”测试属于这些类别,并根据其标签过滤测试。例如,您可以将某些测试标记为缓慢,并选择在某些运行期间排除慢速测试。ScalaTest默认支持一个标签:ignore。您可以将测试标记为被忽略以暂时关闭测试。

标记测试被忽略

为了支持“临时”禁用测试的常见用例,有意在稍后复活测试,每种风格特征提供了将测试标记为忽略的方法。例如,在一个FlatSpec你可以在更改itinignore

import org.scalatest.FlatSpec
import scala.collection.mutable.Stack

class StackSpec extends FlatSpec {

  "A Stack" should "pop values in last-in-first-out order" in {
      val stack = new Stack[Int]
      stack.push(1)
      stack.push(2)
      assert(stack.pop() === 2)
      assert(stack.pop() === 1)
    }

  ignore should "throw NoSuchElementException if an empty stack is popped" in {
    val emptyStack = new Stack[String]
    intercept[NoSuchElementException] {
      emptyStack.pop()
    }
  }
}

如果您 StackSpec 在Scala解释器中运行此版本,请执行以下操作:
scala> (new StackSpec).execute()

它将仅运行第一个测试,并报告第二个测试被忽略:
A Stack
- should pop values in last-in-first-out order
- should throw NoSuchElementException if an empty stack is popped !!! IGNORED !!!

定义和使用您自己的标签

每种风格特征提供了一种标记测试的方式。FlatSpec例如,为了标记测试,例如,将传递抽象类的对象传递org.scalatest.TagtaggedAs 之前in。Class Tag需要一个参数,一个字符串名称。以下是如何定义标记来标记需要数据库的测试:

import org.scalatest.Tag

object DbTest extends Tag("com.mycompany.tags.DbTest")

给定这个定义,你可以标记这样的FlatSpec测试:
import org.scalatest.FlatSpec
import org.scalatest.tagobjects.Slow

class ExampleSpec extends FlatSpec {

  "The Scala language" must "add correctly" taggedAs(Slow) in {
      val sum = 1 + 1
      assert(sum === 2)
    }

  it must "subtract correctly" taggedAs(Slow, DbTest) in {
    val diff = 4 - 1
    assert(diff === 3)
  }
}

此代码标记了两个测试与org.scalatest.tagobjects.Slow标签,并"The Scala language should subtract correctly"com.mycompany.tags.DbTest标签测试。

当执行套件时,可以根据其标签可选地包括和/或排除(过滤)测试。就是这样:


注意:
  最好在命令行操作,不要在ide集成开发工具中编写。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值