是否可以控制Scalatest异步测试用例的执行?

时间:2018-10-22 04:23:30

标签: asynchronous scalatest

我正在使用 ScalaTest的 AsyncFlatSpec 样式。 我有什么方法可以确保 Second Third 测试用例仅在 First 完成后才开始执行?

这是代码示例:-

class SomeAsyncSpec extends AsyncFlatSpec with Matchers {

        var mutableVariable = 0

        "First test case" should "perform foo asynchronously" in {
            println("First TEST CASE")
            performFooFutureCall(mutableVariable)
            //assert something
         }

         "Second test case" should "perform bar asynchronously" in {
            println("Second TEST CASE")
            performBarFutureCall(mutableVariable)
            //assert something
         }

         "Third test case" should "perform baz asynchronously" in {
            println("Second TEST CASE")
            performBazFutureCall(mutableVariable)
            //assert something
         }

      }

1 个答案:

答案 0 :(得分:0)

从代码中可以明显看出,在此套件中一个接一个地执行测试的原因是不会影响共享的可变状态。

在这种情况下,它将对AsyncFlatSpec文档的行有所帮助:-

https://github.com/scalatest/scalatest/blob/78e506537ed06d4438e1d365e18c160d46d2bf18/scalatest/src/main/scala/org/scalatest/AsyncFlatSpec.scala#L233

  

因为ScalaTest在JVM上的默认执行上下文限制了Future转换的执行    *并回调到单个线程,您不必(默认情况下)担心同步对可变状态的访问    *在您的异步样式测试中。

从提供的链接中查看文档以获取更多信息。