-1
當越來越嘲笑我對這種結構的,在這裏我必須向下傳遞Activity
的語境成FileUsageTool
-class,在那裏我寫和閱讀有關的和SuperClass
狀態數據的問題測試。Android的情況下不測試
public class FragmentA extends Fragment {
SubClass = new SubClass(getActivity()); //Context from getActivity()
}
public class SubClass extends SuperClass {
public SubClass(Context ctx) {
super(ctx);
line = "hello world";
//file doesn't exist yet even thought we have created File object in
//FileUsageTools constructor
if (!filer.file.exists()) {
filer.saveFile(this);
}
}
}
public class SuperClass {
String line;
public SuperClass(Context ctx) {
FileUsageTool filer = new FileUsageTool(ctx);
}
}
而且這裏FileUsageTool
I類必須使用上下文來創建一個文件,並寫入。將在SuperClass
和中調用saveToFile
。
public class FileUsageTool {
Context context;
File file;
FileUsageTool(Context ctx) {
context = ctx;
file = new File(ctx.getFilesDir(), "asd.txt");
}
saveFile(SuperClass spr) {
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(file)));
writer.println(spr.line);
writer.close();
}
}
但是,當我想測試和模擬Context
和FileUsageTool
類
@RunWith(MockitoJUnitRunner.class)
public class SubClassTest {
@Mock
private Context mockContext;
@Mock
private FileUsageTool mockFileUsageTool;
@InjectMocks
private SubClass subClass = new SubClass(mockContext);
public testCase() {
assertEquals(subClass.line == "hello world");
}
我一直在if (!filer.file.exists())
越來越NullPointerException
當我運行測試,即使我把mockFileUsageTool
關閉。問題可能在嘲笑或其他事情。