我有一個特性,添加了幾個測試,並在塊之前。具體實例的@Before塊在特徵中的塊之前運行。哎呀,這意味着我不能截斷數據庫表,然後插入夾具:如何訂購@Before方法
trait DatabaseTest {
@Before
def truncate() {
// "TRUNCATE %s".format(tableName)
}
def tableName
}
class PersonasTest extends DatabaseTest {
@Before
def addPersona() {
// "INSERT INTO %s VALUES (...)".format(tableName)
}
@Test
def testRejectsInsertWhenAlreadyInTable() {
// "INSERT INTO %s VALUES (...)".format(tableName)
}
def tableName = "personas"
}
testRejectsInsertWhenAlreadyInTable
總是成功,因爲執行順序將是:
addPersona
truncate
testRejectsInsertWhenAlreadyInTable
什麼是訂購@Before塊的正確方式,而不會對子類施加太多限制?我總是可以在trait中聲明truncate
,然後在子類中有一個@Before方法,但是我必須記住讓所有的子類調用該截斷方法。
在Scala 2.9.0.1上使用JUnit 4.10。
哪裏是JUnit的快照回購?根據build.xml https://github.com/KentBeck/junit/blob/master/build.xml#L306,我應該在https://oss.sonatype.org/content/repositories/snapshots上找到它,但只有4.9 .1在那裏。 –
我認爲有一個錯誤。每晚構建似乎是4.9.1而不是4.11-SNAPSHOT。我通過電子郵件發送了維護人員。 –
4.9.1-SNAPSHOT不包含ChainRule,因此它可能是4.9.1而不是4.11。非常感謝你的幫助! –