j'ai des problèmes dans les tests SubClass
ce type de structure, où je dois livrer contexte de Activity
en une FileUsageTool
-class, où j'écrire et lire des données sur l'état de SubClass
et SuperClass
.contexte Android ne se moquaient lors du test
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);
}
}
Et ici en classe FileUsageTool
je dois utiliser le contexte pour créer un fichier et d'écrire. saveToFile
sera appelé à la fois, SuperClass
et 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();
}
}
Mais quand je veux tester les SubClass
et se moquer Context
et FileUsageTool
cours
@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");
}
Je continue de recevoir NullPointerException
à if (!filer.file.exists())
quand je lance le test, même si je prends le large mockFileUsageTool
. Le problème pourrait être de se moquer ou d'autre chose.