您好,我有这个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,以防万一。