{"id":208,"date":"2016-06-30T16:21:16","date_gmt":"2016-06-30T14:21:16","guid":{"rendered":"http:\/\/crazyice.net\/?p=208"},"modified":"2016-06-30T16:52:02","modified_gmt":"2016-06-30T14:52:02","slug":"junit-tests-android-studio-2-1-2","status":"publish","type":"post","link":"https:\/\/crazyice.net\/?p=208","title":{"rendered":"JUnit Tests Android Studio 2.1.2"},"content":{"rendered":"<p>Was w\u00e4re heutzutage Softwareentwicklung ohne Unit-Tests. Auch in der Entwicklung f\u00fcr mobile Entger\u00e4te 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\u00e4che) haben, schnell und einfach testen.<\/p>\n<p><!--more--><\/p>\n<h3>Dependency:<\/h3>\n<p>Folgendes muss in der Datei <code>app\/build.gradle<\/code> unter <code>dependencies<\/code> eingetragen werden:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">dependencies {\r\n    ...\r\n    testCompile 'junit:junit:4.12'\r\n    testCompile \"org.mockito:mockito-core:1.10.19\"\r\n    ...\r\n}<\/pre>\n<p>Dadurch k\u00f6nnen JUint Tests, wie in Java gewohnt, ganz normal gestartet werden.<\/p>\n<h3>Resources:<\/h3>\n<p>Um Ressourcen wie Bilder oder andere Datein in den Tests einzubinden muss das Verzeichnis <code>app\/src\/test\/resources<\/code> erstellt werden. Darin enthaltene Dateien k\u00f6nnen danach mit folgendem Code-Snipet innerhalb einer verwendet werden (in diesem Fall wird der abolute Pfad der Datei von der Methode zur\u00fcckgeliefert).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">...\r\n\r\nprivate\u00a0static\u00a0final\u00a0String\u00a0DOCUMENT_FILE\u00a0= \"myResourceFile.ext\";\r\nprivate static String getFileName(Object obj, String fileName) {\r\n    ClassLoader classLoader = obj.getClass().getClassLoader();\r\n    URL resource = classLoader.getResource(fileName);\r\n    File file = new File(resource.getPath());\r\n    return file.getAbsolutePath();\r\n}\r\n\r\n@Before\r\npublic void test_Setup() {\r\n    testObject = new TestObject();\r\n    TestDocument document = null;\r\n    try {\r\n        document = new TestDocument(getFileName(this, DOCUMENT_FILE));\r\n    } catch (FileNotFoundException e) {\r\n        e.printStackTrace();\r\n    }\r\n    testObject.addDocument(document);\r\n}\r\n...<\/pre>\n<p>In diesem Fall wird in der Methode test_Setup() ein <code>TestObjekt<\/code> einer beliebigen Klasse erstellt, welches eine Liste von Dokumenten h\u00e4lt. Das <code>TestDocument<\/code> repr\u00e4sentiert irgend eine Art von Dokument-Objekt. Um dieses Dokument zu erstellen wird dem Constructor der absolute Dateipfad \u00fcbergeben, der durch die statische Methode <code>getFileName(obj, fileName)<\/code> ermittelt wird. Danach wird das Dokument-Objekt der Dokument-Liste des Test-Objektes hinzugef\u00fcgt.<\/p>\n<p>W\u00e4hren des Kompilierens werden die Ressourcen nach <code>app\\build\\intermediates\\sourceFolderJavaResources\\test\\debug<\/code> kopiert. Demnach wird zur Laufzeit auch mit diesem Pfad gearbeitet!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was w\u00e4re heutzutage Softwareentwicklung ohne Unit-Tests. Auch in der Entwicklung f\u00fcr mobile Entger\u00e4te 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 &hellip; <a href=\"https:\/\/crazyice.net\/?p=208\" class=\"more-link\"><span class=\"screen-reader-text\">JUnit Tests Android Studio 2.1.2<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,77,29,81],"tags":[],"class_list":["post-208","post","type-post","status-publish","format-standard","hentry","category-android","category-java","category-programmieren","category-unit-test"],"_links":{"self":[{"href":"https:\/\/crazyice.net\/index.php?rest_route=\/wp\/v2\/posts\/208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crazyice.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crazyice.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crazyice.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crazyice.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=208"}],"version-history":[{"count":5,"href":"https:\/\/crazyice.net\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions"}],"predecessor-version":[{"id":214,"href":"https:\/\/crazyice.net\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions\/214"}],"wp:attachment":[{"href":"https:\/\/crazyice.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crazyice.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crazyice.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}