Specs2顺序关键字

时间:2013-09-22 09:48:02

标签: scala testing specs2

当我在Junit中运行测试时,他们的订购无法保证。默认情况下,specs2并行运行示例,因此这里也不保证排序。但是,如果我添加顺序关键字,则按顺序执行测试(至少从它看起来如此)。有没有办法获得顺序行为但是示例是以随机顺序运行的?

2 个答案:

答案 0 :(得分:2)

您可以使用最新的specs2 2.3-SNAPSHOT版本和random命令行参数(或规范中的args.execute(random=true)):

class TestSpec extends Specification { def is = s2"""

  test1 $e1
  test2 $e2
  test3 $e3

  """

  def e1 = { "starting e1".pp; Thread.sleep(30); "e1".pp; ok }
  def e2 = { "starting e2".pp; Thread.sleep(20); "e2".pp; ok }
  def e3 = { "starting e3".pp; Thread.sleep(40); "e3".pp; ok }
}

sbt> testOnly *TestSpec* -- random

starting e3
e3
starting e2
e2
starting e1
e1
[info] TestSpec
[info]
[info]   + test1
[info]   + test2
[info]   + test3
[info]

答案 1 :(得分:0)

如何使用在每个测试用例开始时获取锁定的代码来装饰/包装测试用例? Hacky也许,但是应该可靠地工作并且易于实现,直到/除非你能找到更有意义的替代方案。