当我在 Junit 中运行测试时,不能保证它们的顺序。默认情况下,specs2 并行运行示例,因此这里也不保证排序。但是,如果我添加了序列关键字,则测试将按顺序执行(至少从看起来如此)。有没有办法获得顺序行为但让示例以随机顺序运行?
问问题
442 次
2 回答
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]
于 2013-09-23T06:18:20.197 回答
0
用在每个测试用例开始时获取锁的代码来装饰/包装测试用例怎么样?也许是 Hacky,但应该可靠地工作并且易于实现,直到/除非你能找到一个更适合使用的替代方案。
于 2013-09-22T11:45:02.200 回答