這是我第一次編寫JUnit測試,並且遇到以下問題。我必須寫一個抽象類的測試,我被告知做這種方式: http://marcovaltas.com/2011/09/23/abstract-class-testing-using-junit.html測試抽象類拋出InstantiationException
然而,當我嘗試運行第一個測試,我得到一個InstantiationException
這樣的:
java.lang.InstantiationException
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
這裏是我正在運行的測試:
/**
* Test of setNumber method, of class BaseSudoku.
*/
@Test
public void testSetNumber_3args() {
System.out.println("setNumber");
BaseSudoku b = getObject(9);
boolean expResult = false;
boolean result = b.setNumber(0, -7, 7);
assertEquals(expResult, result);
}
請注意,基地數獨是一個抽象類,HyperSudoku是一個孩子。
我已實現了以下的抽象方法BaseSudokuTest:
protected abstract BaseSudoku getObject(int size);
而這裏的一個擴展BaseSudokuTest
在HyperSudokuTest
實現:
@Override
protected BaseSudoku getObject(int size) { //I need size for other implementations
return new HyperSudoku();
}
你能分享完整的堆棧跟蹤嗎? – Mureinik
testSetNumber_3args導致一個錯誤:java.lang.InstantiationException java.lang.InstantiationException java.lang.reflect.Constructor.newInstance(Constructor.java:526) 這就是我得到的! – syfantid
我會要求你發佈一個我們可以運行的最小測試用例,它會重現這一點。添加'BaseSudoku'和HyperSudoku'類。 –