Android的情况下不测试
问题描述:
当越来越嘲笑我对这种结构的,在这里我必须向下传递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
关闭。问题可能在嘲笑或其他事情。
答
我相信这是因为你在初始化中使用上下文。
试试这个
@RunWith(MockitoJUnitRunner.class) public class SubClassTest {
@Mock private Context mockContext; @Mock private FileUsageTool mockFileUsageTool;
@InjectMocks私有子类的子类;
@override
protected void setUp() {
subClass = new SubClass(mockContext)
}
public testCase() {
assertEquals(subClass.line == "hello world");
}