我有一个特性,添加了几个测试,并在块之前。具体实例的@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。非常感谢你的帮助! –