我正在測試一個android應用程序,並且正在使用我的大學爲我提供的一個庫,1-4級來自我的講師供我們使用。Android單元測試:我如何測試?
我有一個類結構如下所示:
ClassOne
public ClassOne {
private ClassTwo clsTwo;
...
public ClassOne(ClassTwo p1)
public ClassTwo getClsTwo();
}
ClassTwo的結構爲這樣:
public ClassTwo {
private ClassThree clsThree;
...
public ClassTwo()
public ClassThree getClsThree();
}
ClassThree的結構爲這樣:
public ClassThree {
private HashMap<Bitmap> mBitmaps;
...
private ClassFour clsFour;
...
public ClassThree(ClassFour p1);
...
public loadFile(String path, String name);
public loadFileFromAssetStore(String name);
}
CLA ssFour的結構爲這樣:
public ClassFour {
...
public ClassFour(Context context);
...
}
我測試是ClassFive,具體有方法的類強調了正在造成的問題:
public ClassFive {
private Bitmap myBitmap
...
public ClassFive(...,...,...,ClassOne p,...){
super(..., p,
p.getClsTwo().getClsThree().loadFileFromAssetStore("Default value"));
this.myBitmap = loadCorrectFile(...,p);
}
private Bitmap loadCorrectFile(..., ClassOne p){
String strCorrectFileName;
switch(...){
...
// set value of strCorrectFileName
...
}
this.myBitmap = p.getClsTwo().getClsThree().loadFileFromAssetStore(strCorrectFileName);
}
}
我的問題是我需要測試使用的構造方法ClassFive,但是當用NPE調用構造函數時,所有測試都會'翻倒'。
public class ClassFiveTest {
@Mock
private ClassOne mockClassOne = Mockito.Mock(ClassOne.class);
@Test
public void testConstructorGetName() throws Exception {
ClassFive instance = new ClassFive(..., mockClassOne);
...
// Assertions here
...
}
我的問題是,被返回一個空指針異常之前我的測試可以讓我的斷言。我需要使用mockito嗎?因爲我嘗試過 - 也許我只是在這個實例中使用了錯誤。或者我需要使用儀器測試?當我嘗試進行儀器測試時,發現無法訪問ClassOne和ClassTwo?
表現的很出色,太感謝你了!你的解釋絕對精彩。 –
@PeterReid不客氣!我很高興它有幫助。祝你學業好,新年快樂! –