加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 设置以使SBT在错误时快速停止(停止)

发布时间:2020-12-16 09:39:01 所属栏目:安全 来源:网络整理
导读:我正在运行一个多项目SBT(v0.13)构建,并希望它在子项目中遇到的第一个错误(编译)失败(停止)。 目前的行为是当子项目中无法编译某些东西时,它会继续编译所有其他子项目。 遇到编译错误的第一个子项目是否有办法/设置使SBT停止/退出? 解决方法 据我所知,SB
我正在运行一个多项目SBT(v0.13)构建,并希望它在子项目中遇到的第一个错误(编译)失败(停止)。

目前的行为是当子项目中无法编译某些东西时,它会继续编译所有其他子项目。

遇到编译错误的第一个子项目是否有办法/设置使SBT停止/退出?

解决方法

据我所知,SBT不控制这一点。当SBT检查您的单元测试时,SBT将会调用相应的测试框架。然后,测试框架可以决定运行测试的顺序,同时运行它们,如何报告问题等等。当然,每个测试框架都有自己的功能,配置和约定。 Scala的两个最广泛使用的测试框架是ScalaTest和Specs2。

幸运的是,您可以在Specs2或ScalaTest中获得您要求的行为。我在下面提供了简单的单元测试示例,尽早失败。

ScalaTest

您可以通过混合CancelAfterFailure特征,在ScalaTest中获取单个测试套件的故障快速行为。例如,此测试将执行第一个测试,第二个测试失败,并显示第三个被取消。

class SomeSuite extends FunSuite with CancelAfterFailure with Assertions {

  test("first") {
    println("first")
  }

  test("second") {
    assert(false)
  }

  test("third") {
    println("third")
  }
}

Specs2

与ScalaTest类似,您可以在每个规范的基础上控制Specs2中的行为。要获得类似故障的行为,您需要在规范中添加两个参数:顺序和stopOnFail。有关可以设置的参数的完整列表,请参阅the docs。 (如果你想要一个明显的线性排序,你需要两个,因为默认情况下Specs2将同时执行你的测试!)

class SomeSpec extends Specification {

  sequential
  stopOnFail

  "specs2" should {
    "first" in {
      println("first")
      ok
    }

    "second" in {
      "foo" must equalTo ("bar")
    }

    "third" in {
      println("third")
    }
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读