diesen Code auf the example in the Jmockit tutorial Gemäße sollte es tun:Mocking statische Methoden mit JMockit (1.5) vor der Klasse
@BeforeClass
public static void setUpClass() {
new MockUp<UtilJndi>(){
@Mock
public static String getDirectoryFromContext(Property jndiName) // line 66
throws DirectoryNotFoundException {
return "noDirectory";
}
};
}
Aber es zeigt:
myclass.java:[66,29] error: Illegal static declaration
Wie kann ich dieses Problem lösen?
ich eine andere Abhilfe wich hinzufügen wird funktioniert für mich:
ich meine verspottet Klasse erweitern MockUp erstellen:
public static class MockUtilJndi extends MockUp<UtilJndi> {
public MockUtilJndi() {
super();
}
@Mock
public static String getDirectoryFromContext(Property jndiName)
throws DirectoryNotFoundException {
return "noDirectory";
}
}
Wenn Sie bemerken, nenne ich das super() in meinem Konstruktor. Ursache nach Dokumentation, wenn Sie MockUp Konstruktor aufrufen wird die Umsetzung in der Zielklasse ändern .. so, wenn Sie diese haben in Ihrem verspottet Klassenkonstruktors Sie müssen nur Ihre Klasse innerhalb der @BeforeClass kommentierten Methode erstellen:
@BeforeClass
public static void setUpClass() {
new MockUtilJndi();
}
Welche Linie ist Linie 66? –
public static String getDirectoryFromContext (Eigenschaft jndiName) –
Obwohl ich JMockit nicht kenne, scheint mir das Problem sehr klar zu sein. Die Fehlermeldung "Illegal static declaration" sagt Ihnen alles. Das "Statische" ist falsch. Auch das von Ihnen verlinkte Beispiel verwendet an dieser Stelle keine statische Methode. Wie bist du zu der Überzeugung gelangt, dass Statik dort platziert werden muss? (Confusing ...) – Seelenvirtuose