我爲我的Shard類創建了一個JUnit4 TestCase,但是當我嘗試擴展GroovyTestCase時,它不運行我的@BeforeClass和@AfterClass方法。GroovyTestCase不支持@BeforeClass和@AfterClass
這裏是我的代碼
import groovy.sql.*
import org.junit.*
class ShardUnitTests {
static def shard
static def sql
static def mysqlserver = "REDACTED"
@BeforeClass
static void beforeClassSetUp(){
def db = [url:'jdbc:mysql://${mysqlserver}:3306/test', user:'root', password:'password', driver:'com.mysql.jdbc.Driver']
sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
shard = new Shard(sql: sql)
}
@AfterClass
static void afterClassTearDown(){
sql.execute("DROP TABLE test")
sql.close()
}
@Test
//Test that createObjectTable creates a table with 2 columns
void testCreateObjectTable(){
shard.createObjectTable("test")
sql.rows("SELECT * FROM test"){meta ->
assert meta.getColumnName(1) == "id"
assert meta.getColumnName(2) == "data"
}
}
}
當我改變類定義
class ShardUnitTests extends GroovyTestCase{
的beforeClassSetUp()和afterClassTearDown()方法不會被調用。 有沒有其他的語法我應該使用這些方法,或者它只是與GroovyTestCase不兼容?
您看過「GroovyTestCase」類嗎? – dmahapatro
是的,我查看了CodeHaus上的API文檔。我知道我可以聲明setUp()和tearDown()在每個案例之前和之後運行,但我想嘗試一個數據庫設置並拆除整個測試集。 這可能嗎? –
'GroovyTestCase'是'JUnit 3'風格,JUnit 3不支持這個。看看這個問題http://stackoverflow.com/questions/7208593/how-can-i-get-beforeclass-and-afterclass-equivalent-in-junit3 – Dany