【发布时间】:2014-07-08 19:58:45
【问题描述】:
我想问一个简单的问题。
有没有办法在特定测试之前和之后运行一些代码?
想象一下,我希望在特定测试之前和之后执行一些环境设置代码,但不是在所有测试中。
我试图定义一个函数来为我做这件事,并在我的测试开始和结束时调用该函数。它工作正常,但如果测试失败,我最后调用的函数不会被调用(因为测试失败)。
有没有办法限制 beforeAndAfter 特性只在特定测试中执行?
谢谢。
【问题讨论】:
我想问一个简单的问题。
有没有办法在特定测试之前和之后运行一些代码?
想象一下,我希望在特定测试之前和之后执行一些环境设置代码,但不是在所有测试中。
我试图定义一个函数来为我做这件事,并在我的测试开始和结束时调用该函数。它工作正常,但如果测试失败,我最后调用的函数不会被调用(因为测试失败)。
有没有办法限制 beforeAndAfter 特性只在特定测试中执行?
谢谢。
【问题讨论】:
你可以这样做(或这个的变体):
def beforeAfter[T](before: =>Unit, after: =>Unit)(t: =>T) = {
before
try t
finally after
}
然后
beforeAfter(before = action1, after = action2) {
test
}
【讨论】: