2016-09-02 2 views
0

Guten Tag meine Kollegen Entwickler,Android Studio: Debugging-Junit-Test: falsche Werte zugewiesen sind

Ich habe meine erste Komponententest in Android Studio geschrieben. Aber das Verhalten ist komisch oder ich mache etwas falsch.

In diesem Test erstelle ich einfach einen android.graphics.PointF mit X = 3 und y = 0. Aber wie es sich aus dem Logger herausstellt, ist es immer 0. Hier ist ein Screenshot. Ich bin zur Zeit auf der nächsten Zeile aus der Protokollierung und wie Sie in concole sehen: INFO: u2: x = 0,0 y = 0,0

Oh, I'm not allowed to embed images on SO, so please click here.

Alles falsch ich hier tue? Vielen Dank.

Antwort

1

OK, dieses Verhalten ist, weil:

standardmäßig die Android-Plug -in für Gradle führt Ihre lokalen Unit-Tests mit einer modifizierten Version der android.jar-Bibliothek aus, die keinen tatsächlichen Code enthält. Stattdessen rufen Methodenaufrufe für Android-Klassen aus Ihrem Komponententest eine Ausnahme auf.

von hier: https://developer.android.com/training/testing/unit-testing/local-unit-tests.html#mocking-dependencies

erklärt Dies alles. Was wir tun müssen, ist, die ganze Bandbreite der Methoden von PointF zu verspotten. BTW, die öffentlichen Felder .x und .y funktioniert einfach, weil es keine Setter hinter ihnen gibt, so dass keine Ausnahme ausgelöst wird.

Eigentlich ist das alles nur komisch.

0

Sie können das Problem beheben, indem x Einstellung und y nach contructor ...

PointF f = new PointF(12f, 15f); 
     f.y = 12f; 
     f.x = 15f; 

enter image description here

+0

Sie haben Recht. Irgendeine Erklärung dazu? –

+0

Ich weiß es nicht, aber ich hatte das gleiche Problem mit Rect und RectF-Klassen, die auch in Android-Grafiken sind –

+0

Wenn ich nichts vermisse, ist es ein Fehler. Sollten wir es in Android Bug Tracker ablegen? –