code it

Martins Tech Blog

SourceTree und 'ssh-agent' ist fehlgeschlagen mit Code -1: System.NullReferenceException

Seit ich Git als SCM benutze, verwende ich auch SourceTree, um mir das Ganze etwas grafischer darstellen zu lassen. Bisher war ich auch ziemlich zufrieden und glücklich damit.

Aber dann kam das Update auf Version 1.8 und es änderte sich einiges. Neben der Änderung der Nutzungsbedingungen, die zwar im Blog deutlich hervorgehoben, aber irgendwie im Installationsprozess für mich nicht ersichtlich war, trat seitdem bei jedem Start von SourceTree folgender Fehler auf:

'ssh-agent' ist fehlgeschlagen mit Code -1: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
()
Ich brauche wohl nicht zu erwähnen, dass es mit der Vorversion problemlos ging.

Mein Lösungsweg:
a) das System-Git mal wieder auf einen aktuellen Stand bringen
und
b) im SourceTree unter Tools ⇨ Optionen ⇨ Git auf den Button "Benutze System Git" klicken

Schon werde ich wieder nach meinem Kennwort für den SSH-Key gefragt und alles läuft wie vorher.

Code Coverage Reports für UnitTests in Android Studio

Android Studio unterstützt automatisiertes Testen bereits out-of-the-box. Dabei wird grundsätzlich zwischen verschiedenen Arten von Tests unterschieden. Eine detaillierte Beschreibung findet man im Testing-Abschnitt der Doku.

Nach dem Durchführen der Tests erhält man einen Testreport und (sofern aktiviert) auch einen mit JaCoCo erzeugten Coverage-Report. Allerdings war das Android-Studio-Team hier nicht ganz so konsequent, denn die Coverage-Reports werden für UnitTests nicht erzeugt. Hier spiegeln sich lediglich die Android-Tests wider.

Wie kann man nun erreichen, dass meine ganz normalen Unit-Tests mit JUnit auch einen solchen Coverage-Report erzeugen. In meinem Projekt habe ich nämlich lediglich JUnit-Tests und ich mocke den ganzen Android-Kram mit Hilfe von Robolectric und Mockito - was zugegebenermaßen dafür sorgt, dass ich keine Integrationstests habe, aber dafür eben die Funktionen sauber getestet sind ohne dass ich ich auf einen Emulator verlassen muss.

Nach stundenlangem Suchen in ähnlich gelagerten Problemen auf Stackoverflow bin ich dann in den Kommentaren auf ein Plugin gestoßen, das mein Build-Script genau mit den erforderlichen Funktionalitäten erweitert wird - und seit der Version 0.2.1, welche derzeit bereits als Snapshot vorliegt werden auch Intermediates ignoriert, die "$$" im Dateinamen haben.