Also schaue ich mir die spöttischen Objekte in einem Test an. jedoch der folgende Test wird NPE zurück, wenn „Mockito.when (mock.getName()“ einen Teil eines Codes ausgeführt wird, das ist, weil das mock-Objekt als null zurückgeführt wird.Powermock bringt mir immer wieder ein Null-Objekt zurück
package com.example.activity;
import com.example.BuildConfig;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.junit.Assert.assertTrue;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" })
@PrepareForTest(Static.class)
public class DeckardActivityTest {
@Rule
public PowerMockRule rule = new PowerMockRule();
@Mock
public ToBeMocked mock;
@Test
public void testSomething() throws Exception {
assertTrue(Robolectric.buildActivity(DeckardActivity.class).create().get() != null);
}
@Test
public void testStaticMocking() {
PowerMockito.mockStatic(Static.class);
Mockito.when(Static.staticMethod()).thenReturn(mock);
Mockito.when(mock.getName()).thenReturn("Mock");
assertTrue(Static.getResp().equals("Mock"));
}
}
und die einfache Klasse wir Tests sind
Paket com.example.activity;.
public class Static {
private static ToBeMocked toBeMocked;
public static ToBeMocked staticMethod() {
toBeMocked = new ToBeMocked();
return toBeMocked;
}
public static String getResp(){
return toBeMocked.getName();
}
}
So muss mein Verständnis falsch sein Was Ich mag würde tun Mock aus der ToBeMocked Klasse Abhängigkeit geben und das Mock-Objekt sagen, wie zu reagieren, wenn getName Methode heißt es.
Kann jemand mir helfen, warum dies falsch oder darauf hinweisen wird, was ich
Versuchen Sie, etwas für mich zu verspotten, Bewegen Sie den Mockito .when (mock.getName()). thenReturn ("Mock"); über dem thenReturn für die statische Methode. – Lencalot