Stworzyłem nowy testowy projekt Androida. Pobrałem powermock-mockito-junit-1-1.5.zip z https://code.google.com/p/powermock/downloads/list. Dodałem wszystkie biblioteki do folderu projektu testowego w wersji libs
. Klasa testowa jest bardzo prostym obiektem:Jak korzystać z PowerMock w projektach Android?
package com.test.test;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;
import android.util.Log;
@RunWith(PowerMockRunner.class)
public class TestTestAndroid {
public void testRuns() {
Log.e("test", "Test case is called");
}
}
Następnie próbuję uruchomić projekt z Eclipse lub utworzyć projekt z wiersza poleceń. Mam ten sam błąd:
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description;
Jak się okazuje, zarówno junit-4.8.2.jar
i mockito-all-1.9.5.jar
zdefiniowania org.hamcrest.Description
. Muszę dodać słoik Mockito z oczywistych powodów - potrzebuję Mockito. Inna wersja JUnit jest dostarczana przez Androida, ale jest to stara wersja, która nie zawiera adnotacji @RunWith
.
Czy ktoś może odpowiedzieć na pytanie, w jaki sposób korzystać z powermock i mockito w projekcie Android, bez konfliktu z org.hamcrest.Description
?
Jeśli nie można używać PowerMock na Androida, wiesz jakikolwiek inny sposób na umieszczenie statycznej metody w systemie Android? – lowellk
@lowellk Istnieje obejście problemu. Niech metoda niestatyczna wywoła metodę statyczną, a następnie ją zatknie. Na przykład, jeśli 'HttpConstants.getUrl()' jest metodą statyczną, napisz inną metodę: 'String getUrl() {return HttpConstants.getUrl(); } 'Następnie możesz zamknąć tę metodę. –
+1 za wskazówkę @ MattQuigley –