【发布时间】:2017-10-18 22:25:53
【问题描述】:
我在这种结构中测试SubClass 时遇到问题,我必须将Activity 的上下文传递到FileUsageTool 类中,我在其中写入和读取有关SubClass 和@ 状态的数据987654325@.
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 类中,我必须使用上下文来创建文件并写入文件。 saveToFile 将在 SuperClass 和 SubClass 中被调用。
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();
}
}
但是当我想测试 SubClass 和模拟 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");
}
即使我关闭了mockFileUsageTool,当我运行测试时,我仍然在if (!filer.file.exists()) 收到NullPointerException。问题可能出在模拟或其他方面。
【问题讨论】:
标签: java android unit-testing junit mockito