在特定测试之前和之后运行代码的Scalatest

时间:2014-07-08 10:03:58

标签: scala scalatest

我想问一个简短的问题。

有没有办法在特定测试之前和之后运行一些代码?

想象一下,我希望在特定测试之前和之后执行一些环境设置代码,但不是在所有测试中都执行。

我已经尝试定义一个函数来为我做这个,并且只是在测试的开始和结束时调用该函数。它工作正常,但如果测试失败,我最后调用的函数不会被调用(因为测试失败)。

有没有办法限制beforeAndAfter trait仅在特定测试中执行?

感谢。

1 个答案:

答案 0 :(得分:3)

你可以这样做(或者这个的变体):

def beforeAfter[T](before: =>Unit, after: =>Unit)(t: =>T) = {
  before
  try t
  finally after
}

然后

beforeAfter(before = action1, after = action2) {
  test
}