我正在为从抽象类扩展的类编写单元测试,子类的一个函数将调用超无效函数和函数。
cls
我只想测试Submit函数,模拟load和getItem函数。我是powermock的新手。
答案 0 :(得分:0)
根据经验,应该尽量避免使用Powermock,因为它通常与错误的代码设计有关。 在这种情况下,您实际上不需要使用它,因为Mockito用spies来介绍这种情况,这本身就是一种不好的代码味道,如文档中所述。
我的建议是使用组成而不是继承来更改代码。
不过,如果您仍然按原样使用代码,只需将Junit和Mockito添加到您的依赖项中,然后编写如下测试:
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class SubBoTest {
@Test
public void shouldBehaveAsExpected() {
final String expected = "expected String";
final String testString = "test string";
final SubBo bo = spy(SubBo.class);
doNothing().when(bo).load(eq(testString));
when(bo.getItem("myName")).thenReturn(expected);
final String actual = bo.submit(testString);
assertEquals(expected, actual);
}
}
再次提醒您,这不是正确的方法,建议进行重构。