嘗試編寫測試用例時出現此問題。 Foo是框架庫中的一個類,我沒有源訪問權限。通過反射或其他方式重寫java final方法?
public class Foo{
public final Object getX(){
...
}
}
我的應用程序將
public class Bar extends Foo{
public int process(){
Object value = getX();
...
}
}
的單元測試用例是無法initalize因爲我不能創建一個Foo對象,由於其他的依賴。由於值爲null,BarTest會拋出一個空指針。
public class BarTest extends TestCase{
public testProcess(){
Bar bar = new Bar();
int result = bar.process();
...
}
}
有沒有一種方法可以使用反射api來設置getX()爲非最終?或者我該如何去測試?
這不是單元測試的目的。單元測試用於非常精細的代碼單元。你所描述的聽起來更像集成測試或可能的功能測試。 – 2009-04-14 16:40:07
不一定;我不知道他工作的具體情況(即其他類,數據庫等),但是您可以同時對多個類進行某些測試 - 例如,如果您使用外部庫,它是好吧,假設它工作正常,並在你的測試中使用它的所有類。 – Seb 2009-04-14 16:47:35
是的,有「你可以同時做很多課程的某些測試」。那些不是單元測試。仍然有用,並且很重要,但它們不是**單元**測試。 – 2009-04-14 17:05:44