Was wäre heutzutage Softwareentwicklung ohne Unit-Tests. Auch in der Entwicklung für mobile Entgeräte ist das Testen im Laufe des Entwicklungszykluses nicht mehr weg zu denken. Daher gebe ich hier ein paar Tips, um auch im Bereich Android Development in den Genuss des JUnit Frameworks zu kommen. So lassen sich Klassen, die keine Relevanz zur GUI (grafischen Oberfläche) haben, schnell und einfach testen.
Dependency:
Folgendes muss in der Datei app/build.gradle
unter dependencies
eingetragen werden:
dependencies { ... testCompile 'junit:junit:4.12' testCompile "org.mockito:mockito-core:1.10.19" ... }
Dadurch können JUint Tests, wie in Java gewohnt, ganz normal gestartet werden.
Resources:
Um Ressourcen wie Bilder oder andere Datein in den Tests einzubinden muss das Verzeichnis app/src/test/resources
erstellt werden. Darin enthaltene Dateien können danach mit folgendem Code-Snipet innerhalb einer verwendet werden (in diesem Fall wird der abolute Pfad der Datei von der Methode zurückgeliefert).
... private static final String DOCUMENT_FILE = "myResourceFile.ext"; private static String getFileName(Object obj, String fileName) { ClassLoader classLoader = obj.getClass().getClassLoader(); URL resource = classLoader.getResource(fileName); File file = new File(resource.getPath()); return file.getAbsolutePath(); } @Before public void test_Setup() { testObject = new TestObject(); TestDocument document = null; try { document = new TestDocument(getFileName(this, DOCUMENT_FILE)); } catch (FileNotFoundException e) { e.printStackTrace(); } testObject.addDocument(document); } ...
In diesem Fall wird in der Methode test_Setup() ein TestObjekt
einer beliebigen Klasse erstellt, welches eine Liste von Dokumenten hält. Das TestDocument
repräsentiert irgend eine Art von Dokument-Objekt. Um dieses Dokument zu erstellen wird dem Constructor der absolute Dateipfad übergeben, der durch die statische Methode getFileName(obj, fileName)
ermittelt wird. Danach wird das Dokument-Objekt der Dokument-Liste des Test-Objektes hinzugefügt.
Währen des Kompilierens werden die Ressourcen nach app\build\intermediates\sourceFolderJavaResources\test\debug
kopiert. Demnach wird zur Laufzeit auch mit diesem Pfad gearbeitet!