Я бы написал MySetup следующим образом:
import org.scalatest.Suite
import org.scalatest.BeforeAndAfterEach
trait MySetup extends BeforeAndAfterEach { this: Suite =>
var service: String = _
abstract override def beforeEach(): Unit = {
service = "apa"
super.beforeEach()
}
abstract override def afterEach(): Unit = {
try {
super.afterEach() // To be stackable, must call super.afterEach
}
finally {
service = ""
}
}
}
Таким образом, тип личности менее навязчив.Майк ответит правильно.Идея состоит в том, чтобы позволить чертам составлять стеки, так что вы можете смешивать разные черты, например, в разных порядках, если хотите.Другая релевантная статья - «Шаблон стекируемой черты»:
http://www.artima.com/scalazine/articles/stackable_trait_pattern.html
Вы также можете найти полезные примеры в соответствующем разделе Scaladoc:
http://www.scalatest.org/scaladoc-1.6.1/org/scalatest/FlatSpec.html#composingFixtures
Заметьте, я тоже называю super.afterEach.Чтобы быть наращиваемым, вам нужно вызывать super как до, так и после.Я делаю это в попытке, чтобы, если super.afterEach сработал с исключением, вы по-прежнему получаете последующее поведение этой черты.(Хотя, вероятно, ваш Suite все равно прервется в этот момент, поэтому в этом случае это, вероятно, не имеет значения. Но в целом это хорошая идея.)