Infos

Ein Blog über verschiedene Bereiche der Softwareentwicklung wie Agiles (Retro, Kanban, Scrum) oder aber auch technisches (Android, Java, Scala, ..)

Zum Inhalt

Mockito in Android Tests verwenden

Januar 21, 2015 Kategorie: Technisches

Der Blog Eintrag klingt unsinnig. Jedem ist klar wie man eine Dependeny einfügt und wie man ein Test schreibt, aber wenn man Mockito innerhalb von Android verwenden will funktioniert das nicht Out-Of-The-Box. Da mich das ne Stunde gekostet hat, schreib ich mal einfach auf wie das geht. Ich gehe der Einfachheit halber einfach davon aus dass Android Studio verwendet wird.

Testklasse:

   ...
   public class YourTest extends TestCase {

      @Override
      protected void setUp() throws Exception {
        super.setUp();
      }

      protected void testSomething() throws Exception {
         TextView simpleExampleTestee = Mockito.mock(TextView.class);
         simpleExampleTestee.setText("test");
         Mockito.verify(simpleExampleTestee, Moskito.once()).setText(Matchers.eq("test"));
      }
   }
   ...

Schritt1:

Mockito wie gewohnt als dependency in build.gradle einfügen
    ...
    androidTest 'org.mockito:mockito-core:1.9.5'
    ...

Als Ergebnis wird bei der Ausführung etwas in folgender Art passieren:
  Caused by: java.lang.VerifyError: org/mockito/cglib/core/ReflectUtils
    at org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)
    at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
    ...

Schritt 2:

Mockito dexmaker einfügen, also hat man dann etwas derartiges:
    ...
    androidTestCompile "org.mockito:mockito-core:1.9.5"
    androidTestCompile "com.google.dexmaker:dexmaker:1.0"
    androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.0"
    ...
Das sollte schon funktionieren auf einem echten Handy, in der CI (Emulator) kam es dann aber zu folgendem Fehler
    java.lang.IllegalArgumentException: dexcache == null (and no default could be found; consider setting the 'dexmaker.dexcache' system property)

Schritt 3:

Dexmaker cache setzen, dann sollte es nun auch auf emulatoren laufen, also zum Beispiel in folgender Art

...
public class YourTest extends TestCase {

  @Override
  protected void setUp() throws Exception {
    super.setUp();
    System.setProperty("dexmaker.dexcache", getContext().getCacheDir().toString());
  }

  protected void testSomething() throws Exception {
    TextView simpleExampleTestee = Mockito.mock(TextView.class);
    simpleExampleTestee.setText("test");
    Mockito.verify(simpleExampleTestee, Moskito.once()).setText(Matchers.eq("test"));
  }
}
...


Checklist Präsentationen

Januar 12, 2014 Kategorie: Checklisten

Wenn du eine Präsentation vorbereitest oder erstellt hast, stelle dir folgende Fragen:

  • Welchen Mehrwert bringt die Präsentation für deine Audience ?
    Die Präsentation ist nicht für dich sondern für die Zuhörer. Stelle also sicher, dass diese mit einem Gewinn aus der Präsentation gehen. Dies kann zum Beispiel Wissen sein welches die Hörer gut nutzen können
  • Hast du Text auf den Folien ?
    Menschen können nicht lesen und Zuhören zur gleichen Zeit. Fülle die Folien deshalb nicht mit Text wenn möglich. Nutze Bilder oder Zeichnungen und falls wirklich nötig dann schreibe nur Stichwörter auf die Folien
  • Kann man die Folien auch noch von weit hinten erkennen ?
    Benutze ein gut zu lesenden Font mit hinreichend großer Schrift (30px)
  • Ist es einfach genug
    Ist der Inhalt einfach genug damit jeder folgen kann? Is jede Folie klar verständlich? Zum Beispiel nutze nur 3 bis 4 Punkte auf jeder Folie.
  • Hast du Zeit für Fragen eingeplannt ?
  • Hast du dich auch auf das Präsentieren vorbereitet ?
    Die Folien sind nur ein Hilfsmittel. Die eigentliche Präsentation erfolgt mündlich. Auch dies sollte vorbereitet sein.
  • Hast du an eine Nachverfolgung gedacht ?
    Nach dem Vortrag sollte man noch zumindest eine mail mit Links und weiterführenden Infos verschicken.
  • Kannst du eventuell was demonstrieren ?
  • Stehst du wirklich hinter dem was du erzälen möchtest ?Ohne von einer Sache &unml;berzeugt zu sein, wird keine Passion entstehen und auch keine überzeugende Präsentation entstehen.
  • Könntest du den Vortrag auch ohne notes halten ?Die genutzten Tools sollen den Inhalt nur unterstützen, eigentlich sollte man auch in der Lage sein den Vortrag spontan auf Boards zu halten.
  • Getestet ob technisch alles funktioniert ?
  • Gibt es eine Agenda ?
  • Hast du dafür gesorgt dass die die Zuhöher wichtige Kernpunkte merken können
    Wichtige Messages sollten besonders gehändelt werden. Wenn ein Zuhörer am Ende gefragt wird worum es ging, so wird es sich ohnehin nur noch an einen Teil erinnern. Aber ein paar Kernpunkte sollten im Einfallen.
  • Hast du es nochmals gegen gecheckt gegen tipps von anderen ?
    Zum Beispiel vergleiche mit http://de.slideshare.net/thecroaker/death-by-powerpoint oder http://www.jeremyfloyd.com/2013/05/10-tips-to-great-presentations/


Ideen-Toolbox

November 23, 2013 Kategorie: Anderes

 

Jede Entwicklung eines Prozesses oder eines Produktes durchläuft eigentlich folgende Stufen:
• Identifikation des Problems
• Generierung von Ideen
• Ausarbeitung detailierter Lösungen oder Designs
• Testen und Nachverfolgen der Wirksamkeit der Lösungen
Hier ein paar Ideen mit welchen Methoden man zu neuen Ideen kommen kann (also der 2.Schritt) wenn man sich mal festgefahren hat:


Idea Journal:
Wenn man eine gute Idee hat sollte man sich diese einfach am besten direkt aufschreiben. Diese Sachen sollte man sammeln. In regelmässigen Abständen oder wenn man nach einer Idee sucht schaut man dann einfach nach ob man nicht schon mal etwas aufgeschrieben hatte.

Suche eine Tätigkeit oder einen Ort an dem Ideen am ehesten kommen:
Manche Menschen kommen bei bestimmten Tätigkeiten oder an bestimmten Orten zu den besten Ideen.

Random Stimulus:
Hier werden zum Beispiel einfach Wörter zufällig aneinandergehängt oder es wird ein zufälliges Ereignis/stimulus mit dem Problem verknüpft. Näheres unter http://www.mycoted.com/Random_Stimuli

SCAMPER:
Man nimmt eine Idee oder ein Produkt und versucht nun andere Ableitungen zu finden indem man eine Komponente austauscht (Substitute), Komponenten anders miteinander kombiniert (Combine), Anpassungen oder Modifikationen vornimmt (Adapt, Modify), das Produkt einem anderen Zweck zuführt (Put to different use), ein Element des Produkts entfernt (Eliminate) oder die Elemente neu zusammensetzt (Reverse/Re-Arrange). Ein cooles Video dazu gibt es hier http://www.youtube.com/watch?v=G8w0rJhztJ4

Morphological Matrix:
Man bildet eine Tabelle mit allen möglichen Attributen als Spalten und allen möglichen Einsatszwecken als Zeilen. Nun schreibt man in die Zellen wie die Kombnation aussehen könnte. Siehe zum Beispiel http://www.mindtools.com/pages/article/newCT_03.htm

Brainwriting 6-3-5:
6 Leute schreiben in 5 Minuten jeweils für sich 3 Ideen auf eine Karte. Dann wird die Karte weitergereicht und alle machen in der nächsten Runde mit den Ideen die auf den Karten sind weiter http://www.mycoted.com/Brainwriting, http://www.bmgi.com/resources/elearning/brainstorming-techniques

Superheroes:
Wenn du ein Problem hast, frag dich was würde James Bond machen ? Verschiedene Teilnehmer nehmen die Rolle von beliebigen Superhelden ein (Superman, Hulk, Batman, James Bond, Wonder Woman, Sherlock Holmes, etc.) und nun werden Probleme so von den Leuten angegeangen wie diese Superhelden es machen würden http://www.mycoted.com/SuperHeroes

Imaginary Brainstorming:
Anstatt über ein Problem nachzudenken, denkt man über ein anderes Problem nach, löst dieses und versucht die Lösungen auf das eigentliche Problem zu übertragen. http://www.bmgi.com/resources/elearning/brainstorming-techniques

Spare Diamonds:
Manchmal muss man sich auch klar machen welche Resourcen man hat um Probleme anzugehen. Dies kann zum Beispiel enthalten:
• Freunde - Kennt man jemanden der ein unterstützen kann ?
• Raum - Hat man einen Ort, Raum den man sich beschaffen kann ?
• Werkzeuge - Hat man Zugang zu Werkzeugen
• Google/Internet - Hat jemand auf diesen Planeten das Problem schon gelöst ?
• Wissen - Welches Wissen hat man, dass man einbringen kann ?

Wissenschaftlich an das Problem gehen:
• Definiere das Problem - Beschreibe es möglichst genau, stelle dir Fragen, ...
• Sammle Informationen - Durchsuche das Netz, Frage andere Beteiligten, ...
• Stelle Hypothesen auf - Gehen nun von gewissen Annahmen aus
• Erzeuge Prototypen - Bau ein Produkt dass die Mindestanforderungen erfüllt oder bestimmte Aspekte aufzeigt um zu testen ob deine Annahmen korrekt waren, zeig es den Kunden oder teste es
• Analysiere Ergenisse - Prüfe das Ergebnis deines Prototypen und deiner Annahmen

Lese mehr:

Technisches agiles Vorgehen Motivation von Mitarbeitern Firmen führen Checklisten Anderes