- 如果测试类是A,被测试方法是funcA
@Componentpublic class A { @Autowired private B b; public String funcA(String name) { return b.getName(name, false); }}
@Componentpublic class B { public String getName(String name, boolean flag) { return name + ":" + flag; }}
- 如何定义测试类
import static org.junit.jupiter.api.Assertions.*;import org.junit.Before;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.junit.jupiter.MockitoExtension;import static org.junit.jupiter.api.Assertions.*;import static org.mockito.ArgumentMatchers.anyString;import static org.mockito.ArgumentMatchers.eq;import static org.mockito.BDDMockito.given;import static org.mockito.Mockito.*;@ExtendWith(MockitoExtension.class)class ATest { @InjectMocks private A a; @Mock private B b; @Before public void setUp(){ // 通过反射给属性,常量或者动态变量赋值 } @Test public void test() { String name = a.funcA("name"); assertEquals(name, "name:"); verify(b).getName(anyString(), false); doCallRealMethod().when(a).funcA(anyString()); given(b.getName(anyString(), eq(false))).willReturn("zhangsan"); assertEquals("zhangsan", "name:"); doThrow(new RuntimeException("error msg")).when(b).getName(anyString(), eq(false)); RuntimeException runtimeException = assertThrows(RuntimeException.class, () -> a.funcA("name")); }}