Warum Methodenaufruf assertEquals ohne dot-Operator?

  • Antworten:4
  • Bentwortet
Babette R.
  • Forum-Beiträge: 239

27.03.2014, 16:57:56 via Website

Hallo zusammen,

ich lerne ja zurzeit Android-App-Programmierer bei der SGD. Nun komme ich mit der Beantwortung einer Einsendeaufgabe nicht ganz klar. Ich habe mich auch schon wund gegoogelt, aber keine richtige Antwort gefunden. Um folgende Fragestellung geht es:

"Die assert-Methoden im Testprojekt wurden 'vereinfacht' aufgerufen mit assertEquals(ressourceString, textView.getText());. Normalerweise erfolgt der Zugriff einer Methode über den dot-Operator. Wie muss der insofern vollständige Aufruf der assert-Methoden lauten? Begründen Sie dies."

Der vollständige Aufruf ist m.M.n. junit.framework.Assert.assertEquals(ressourceString, textView.getText());

Aber die Begründung? Kann man das vergleichen mit der Klasse String, die ja eigentlich vollständig java.lang.String lauten müsste und weil beide Klassen (also sowohl junit.framework.Assert und java.lang.String) von der Mutter aller Klassen java.lang.Object erben?

Ich wäre euch sehr dankbar, wenn ihr mir hierbei helfen könntet.

Antworten
impjor
  • Forum-Beiträge: 1.793

27.03.2014, 17:10:13 via Website

Du kannst direkt Assert.asserEquals(...) benutzen, wenn du einen import hinzufügst:

1import junit.framewoek.Assert;
bzw.
1import junit.framework.*;

Die Methode assertEquals kannst du mit einem static import auch ohne den Assert.-Zusatz aufrufen:

1import static junit.framework.Assert.*;

Mit String ist das anders: java.lang.* ist automatisch importiert.

Mit Object hat das nichts zu tun.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Babette R.
  • Forum-Beiträge: 239

27.03.2014, 18:49:27 via Website

Naja, das mit dem Import scheint irrelevant zu sein, denn ich habe junit.framework.* nicht importiert, aber der Methodenaufruf ohne Klasse funzt trotzdem. Importiert habe ich lediglich

1import android.test.ActivityInstrumentationTestCase2;

So sieht meine Methode aus:

1public void testText(){
2 assertEquals(ressourceString,textView.getText());
3
4 }

Ich kann aus der Antwort leider auch keine BEGRÜNDUNG herauslesen. Noch ein Vorschlag?

Antworten
impjor
  • Forum-Beiträge: 1.793

27.03.2014, 21:10:42 via App

Babette R.
Naja, das mit dem Import scheint irrelevant zu sein, denn ich habe junit.framework.* nicht importiert, aber der Methodenaufruf ohne Klasse funzt trotzdem. Importiert habe ich lediglich

1import android.test.ActivityInstrumentationTestCase2;
Wenn man sich die Doku ( http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html) dazu ansieht, sieht man, dass ActivityInstrumentationTestCase2 von junit.framework.Assert erbt und somit auch alle Funktion dieser Klasse hat.

Babette R.
Ich kann aus der Antwort leider auch keine BEGRÜNDUNG herauslesen.
Die Begründung ist der import. Lösch doch testweise den import, der Code wird nicht compilieren.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Babette R.
  • Forum-Beiträge: 239

28.03.2014, 07:19:39 via Website

anKopfKlatsch ...

Vielen lieben Dank, das war die Spur, auf die ich auch selbst hätte kommen müssen. :wink:

Antworten