您好,我有这个PowerMockito测试,它抛出anìUnfinishedStubbingException

@RunWith(PowerMockRunner.class)
@PrepareForTest(SuperHero.class)
public class SMSActionPresaInCaricoTest {

@Test
public void testExecute() {
    PowerMockito.mockStatic(SuperHero.class);
    when(SuperHero.findSuperHero(anyString())).thenReturn(new SuperHero ());
    Action action = new Action();
    action.execute("", "");
}


SuperHero类具有静态方法findSuperHero,该方法返回从数据库读取数据的SuperHero实例。

我认为该错误是由于thenReturn试图返回模拟类SuperHero的实例所致。

有没有办法在这种情况下使用PowerMockito?还是需要一些重构?

最佳答案

抱歉,无法重现此内容。

这是我完整的测试课程,包括所有导入内容:

package com.example;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.mockito.Matchers.anyString;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.junit.Assert.assertNotNull;

@RunWith(PowerMockRunner.class)
@PrepareForTest(SuperHero.class)
public class SMSActionPresaInCaricoTest {

    @Test
    public void testExecute() {
        PowerMockito.mockStatic(SuperHero.class);
        when(SuperHero.findSuperHero(anyString())).thenReturn(new SuperHero());
        assertNotNull(SuperHero.findSuperHero("Batman"));
    }
}


当我运行此测试时,它通过了。

我没有您的SuperHero类,所以我改用了这一类:

package com.example;

public class SuperHero {
    public static SuperHero findSuperHero(String name) {
        throw new RuntimeException("This method should have been mocked");
    }
}


我正在使用PowerMockito 1.6.2,以防万一。

09-15 23:03