测试scala future

时间:2016-06-04 10:51:05

标签: scala

我有以下测试类:

@RunWith(classOf[JUnitRunner])
class NodeScalaSuite extends FunSuite with ScalaFutures {

在其中,我添加了此测试以检查返回未来的方法:

  test("Any should return the first future") {
    val p = Promise[Int]()
    p completeWith Future.any(List(Future{wait(2000); 1}, Future{wait(1); 2}))
    whenReady(p.future) {x =>
      assert(true)
    }
  }

(我将断言true仅用于更简单的调试。)

当我运行测试套件时,我收到此错误:

[info]   The future returned an exception of type: java.lang.IllegalMonitorStateException.

是什么导致这种情况?

1 个答案:

答案 0 :(得分:1)

根据var _LP_CFG_ = { app_id: appId, options: { triggerSelector: '.chat-btn', onReady: function () { LPMobile.on('visitorMessage', function (data) { // do something }); LPMobile.on('agentMessage', function(data) { // do something }) } } }; 的文件

  如果当前线程不是对象监视器的所有者,则

抛出java.lang.Object#wait

这意味着应在IllegalMonitorStateException块内调用wait。像synchronized这样的东西应该有效,但我认为你真正想要做的就是使用synchronized { wait(2000) }Thread.sleep(2000)旨在与waitnotify结合使用,以同步对来自多个线程的共享资源的访问。它释放对象的监视器,以便另一个线程可以执行相同的同步块。