Eine Methode, die von einer statischen Methode aufgerufen wird, kann nicht überprüft werden

Mohammad Mohsin:

Ich muss überprüfen, ob eine Methode von einer statischen Methode aufgerufen wird.

// Class name: PerformJob
// Method to be tested
public static void job(Context context) {
   JobScheduler jobScheduler = (JobScheduler) context.getSystemService(JOB_SCHEDULER_SERVICE);
   if (jobScheduler != null) {
      JobInfo pendingJob = jobScheduler.getPendingJob(Job.POLLING_JOB_ID);
   }
}

Mein getesteter Code: Ich möchte überprüfen, ob die jobScheduler-Instanz, wenn sie nicht null ist, getPendingJob () aufruft.

@PrepareForTest({Context.class, PerformJob.class, JobScheduler.class, JobInfo.class})
@Mock
Context mContext;
@Test
void jobTest(){
   mockStatic(PerformJob.class);
   JobScheduler scheduler = mock(JobScheduler.class);
   JobInfo pendingJob = mock(JobInfo.class)
   when(mContext.getSystemService(JOB_SCHEDULING_SERVICE).thenReturn(scheduler);
   when(scheduler.getPendingJob(Job.POLLING_JOB_ID)).thenReturn(pendingJob);
   PerformJob.job(mContext);
   
   // Job.POLLING_JOB_ID is an Int
   verify(scheduler, times(1)).getPendingJob(Job.POLLING_JOB_ID); // It fails.
   
}

Hinweis: PerformJob ist eine statische Klasse

Die Fehlermeldung lautet: "Gesucht, aber nicht aufgerufen ... Tatsächlich gibt es keine Interaktion mit diesem Modell."

Was ist hier falsch? Warum ist die Überprüfung fehlgeschlagen? Bitte helfen Sie. Ich bin Neuling. Ich habe nach den gleichen Arten von Problemen gesucht, kann aber keine ähnlichen Problemlösungen finden. Warten auf Hilfe. Vielen Dank

cdevansh:

Das erste ist, dass Sie die PerformJobKlasse und die Klasse, die die Klasse enthält, nicht verspotten müssen PerformJob.

Beachten Sie Folgendes: Angenommen, Sie haben eine Klasse namens Abcund innerhalb der AbcKlasse eine statische Klasse namens, JobPerformerdie eine statische Methode enthält, die jobwie folgt aufgerufen wird:

public class Abc {

  public static class JobPerformer {
    public static void job(Context context) {
        JobScheduler jobScheduler = (JobScheduler) 
        context.getSystemService(JOB_SCHEDULER_SERVICE);
        if (jobScheduler != null) {
          JobInfo pendingJob = jobScheduler.getPendingJob(Job.POLLING_JOB_ID);
        }
    }
  }
}

In der Testklasse brauchen Sie nur noch Folgendes:

private Abc subject;

@Mock
private Context mContext;

@Before
public void setUp() {
    subject = new Abc();
}

@Test
public void testJob() {

    JobScheduler scheduler = mock(JobScheduler.class);
    JobInfo pendingJob = mock(JobInfo.class)
    when(mContext.getSystemService(JOB_SCHEDULING_SERVICE)
    .thenReturn(scheduler);
    when(scheduler.getPendingJob(Job.POLLING_JOB_ID)).thenReturn(pendingJob);

    Abc.JobPerformer.job(mContext);
    
    verify(scheduler).getPendingJob(Job.POLLING_JOB_ID);
}

Wie Sie sehen können, muss ich mich nicht über die Abc-Klasse lustig machen.

Sie versuchen, eine Methode für eine verspottete Klasse aufzurufen. Sie benötigen eine echte Instanz der Klasse, die Sie testen möchten.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Die nicht statische Methode kann nicht von der nicht statischen Methode in Android Studio aufgerufen werden

SetState von Flutter Stateful Widget kann nicht von einer statischen Methode aufgerufen werden

Der Zeiger auf die Elementfunktion kann nicht von der statischen Methode aufgerufen werden

Rufen Sie eine nicht statische C#-Methode aus einer statischen Methode in Blazor auf, die von Javascript aufgerufen wird DotNet.invokeMethodAsync

Das Objekt 'module' kann nicht aufgerufen werden. Die Methode wird in einer anderen Datei aufgerufen

Eine Methode, die in einer Klasse deklariert ist, kann nicht von einer anderen Singleton-Klasse aufgerufen werden

Die Methode kann nicht innerhalb einer Klasse aufgerufen werden

Eine Methode von MainActivity kann nicht aufgerufen werden

Die Methode "push" von undefined kann nicht aufgerufen werden

ionicModal Die Methode 'fromTemplateUrl' von undefined kann nicht aufgerufen werden

TypeError: Die Methode 'charCodeAt' von undefined kann nicht aufgerufen werden

Die Methode "getValues" von undefined kann nicht aufgerufen werden

Blazor: Aufrufen der statischen C # -Methode von der JS-Funktion, die von HTML onclick aufgerufen wird - warum kann der JS die Methode nicht finden?

So erstellen Sie eine Methode, die von einer anderen Klasse mit Punktnotation aufgerufen werden kann

Die Methode innerhalb einer von Main geerbten Klasse kann nicht aufgerufen werden

Die remove () -Methode für eine Liste von Strings in groovy kann nicht aufgerufen werden

Methode kann nicht von Klasse aufgerufen werden

TypeError: Das Objekt 'classname' kann nicht aufgerufen werden (innerhalb einer Methode, die über tkinter.Button.command aufgerufen wird).

Die Methode von UITabBarControllerDelegate wird nicht aufgerufen

rspec: testet, ob eine Methode von einer Methode aufgerufen wird

Kann eine native Methode von einer anderen nativen Methode aufgerufen werden?

Methode kann nicht von einer anderen Methode derselben Klasse in JAVA aufgerufen werden

Wie wird überprüft, ob eine Methode eines nicht nachgebildeten Objekts aufgerufen wird?

Wie verspotte ich eine Methode, die von einer anderen Methode mit EasyMock aufgerufen wird?

Wie man eine Methode verspottet, die von einer anderen Methode aufgerufen wird

Wie kann eine Methode, die von einem äußeren Bereich aufgerufen wird, auf die zu testende Funktion abgestumpft werden?

Es kann nicht auf einen Methodenaufruf von einer nicht statischen zu einer nicht statischen Klasse / Methode zugegriffen werden

Die nicht statische Methode von luckyperm getUserManager() kann nicht von einem statischen Kontext referenziert werden

Wie kann ich in Pytest überprüfen, ob eine Methode von einer anderen Methode aufgerufen wurde?

TOP Liste

  1. 1

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  2. 2

    Wie füge ich mehrere Spalten in einer Spalte mit derselben Tabelle in SQL Server zusammen?

  3. 3

    Wie kann man Gitterquadrate dazu bringen, die Farbe zu ändern?

  4. 4

    Ich kann nicht verstehen, wie man Go-Code in mehreren Dateien kompiliert

  5. 5

    Zählen Sie die Vorkommen jedes Werts in einem Tupel in Python

  6. 6

    Gibt es eine sauberere Möglichkeit, Konstruktorargumente und Instanzeigenschaften einer Klasse in Typescript zu definieren?

  7. 7

    So implementieren Sie Pushwoosh mit ionic 2

  8. 8

    Wie wird der Wert im Dropdown-Menü basierend auf den ausgewählten Daten / IDs angezeigt?

  9. 9

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  10. 10

    Ändern Sie den Knotenpfad in das aktuelle Verzeichnis

  11. 11

    So erstellen Sie ein Array von Objekten aus zwei Arrays von Objekten mit einem gemeinsamen Schlüssel - JavaScript

  12. 12

    Rufen Sie die ID aus der Datagrid-Ansicht ab und zeigen Sie die Daten in Textfeldern einem anderen Formular an

  13. 13

    base js: Wie füge ich einem Objekt eine Eigenschaft auf die 'alte' Weise hinzu?

  14. 14

    Ersetze einen Teil einer Zeichenfolge durch eine Pandas-Spalte als Muster

  15. 15

    Blättern Sie auf Radio Click zur Abschnitts-ID

  16. 16

    CBCentralManager wird nach dem Verbinden neu gestartet

  17. 17

    Scherz, wie man eine Funktion verspottet, die von einer verspotteten Funktion zurückgegeben wird

  18. 18

    django-allauth Empfängersignal zum Hinzufügen einer Gruppenberechtigung zum Benutzer bei der Anmeldung

  19. 19

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  20. 20

    AQL: Teilweise Übereinstimmung in einer Reihe von Zeichenfolgen

  21. 21

    So summieren Sie die Werte zweier Tabellen und gruppieren sie nach Datum

heißlabel

Archiv