我正在测试一个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不客气!我很高兴它有帮助。祝你学业好,新年快乐! –