Powermock überprüfen private statische Methode Aufruf in nicht-statische Methode

Liebe stackoverflow-Kameraden,
Ich habe wieder ein problem bei einem bestimmten PowerMock /Mockito Fall zu arbeiten. Das Problem ist, dass ich brauche, um zu überprüfen, den Ruf einer privaten statischen Methode, die aufgerufen wird, die mit der öffentlichen nicht-statischen Methode. Ein ähnliches Beispiel, das ich gepostet früher auf Wie zu unterdrücken und zu überprüfen, private statische Methode Aufrufe?

Dies ist mein code:

class Factory {

        public String factorObject() throws Exception {
            String s = "Hello Mary Lou";
            checkString(s);
            return s;
        }

        private static void checkString(String s) throws Exception {
            throw new Exception();
        }
    }

- Und das ist meine Testklasse:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Factory.class)
public class Tests extends TestCase {

    public void testFactory() throws Exception {

        Factory factory = mock(Factory.class);
        suppress(method(Factory.class, "checkString", String.class));
        String s = factory.factorObject();
        verifyPrivate(factory, times(8000)).invoke("checkString", anyString());
    }
}

Das problem hier ist, dass der Test erfolgreich ist, aber es sollte nicht sein. Es sollte nicht sein, dass die private statische Methode aufgerufen werden soll, genau 1 mal. Aber egal welchen Wert ich in Zeiten, (), ist es immer überprüft, ob es als wahr... halp 🙁

Sie sollte nicht wirklich testen private Methoden. Diese eng Paare Ihre unit-tests, um die Umsetzung der Ergebnisse in Schmerzen. Warum nicht prüfen Sie, dass die class wirft ein Exception wenn es soll?
Im Grunde hast du Recht, aber leider gibt es in meinem echte - Projekt die Bedingung, wie und Wann die Ausnahme ausgelöst wird, versteckt sich in geschlossenen code. Das ist, warum ich werde für das unterdrücken Verhalten. Ich muss nur überprüfen Sie den Aufruf an.
Diese bereits beantwortet hat, in stackoverflow.com/questions/14065515/...

InformationsquelleAutor Malvin | 2013-05-13

Schreibe einen Kommentar