1
我觀察到一個斷言失敗,我試圖在下面進行描述。簡而言之,當我調用重寫的方法時,初始化的類成員虛假地變爲空。成員變量爲空,虛假?
abstract class A<T> {
T target
def something() {
assert target != null // sanity check -- fails when invoked below
return this
}
}
class B extends A<Something> {
static B makeB() {
def b = new B()
b.target = new Something();
assert b.target != null
return b
}
}
// package test
// Test code
//
def b = B.makeB() // <-- success.
assert b != null
assert b.target != null
b.something() // <-- fails assertion
print "Success!"
我有產生最小的測試用例的麻煩 - 在成功compileonline.com 但與我們在我們的機器代碼(到位東西與龍)運行在上面。
的問題消失,如果我重新實現在子類B.
有沒有人觀察到了類似的效果something
方法?我已經非常沮喪了。
「Something」類在哪裏?你能補充嗎? – 2014-10-28 09:32:12
它恰好是一個Grails域對象 - 這是我不瞭解最小失敗測試用例的地方。也許相關:A用Something和SomethingElse擴展(extends Something)。 – 2014-10-28 09:36:21
事實上,我在代碼中用'Long'替換了'Something',並且發生了同樣的故障。還沒有找到一個獨立失敗的測試用例。 – 2014-10-28 09:50:50