任何人都可以解释我是否有区别:
@SpringBootTest
public class MyServiceMockTest {
@Mock
private MyRepository myRepository;
@InjectMocks
private MyService myService = new MyServiceImpl();
@BeforeEach
void setMockOutput() {
when(myRepository.get(anyString())).thenReturn("something fetched");
}
@Test
void testGet() {
assertEquals("something fetched", myService.get());
}
}
和这个:
@SpringBootTest
public class MyServiceMockTest {
@Mock
private MyRepository myRepository;
@InjectMocks
private MyService myService = new MyServiceImpl();
@Test
void testGet() {
when(myRepository.get()).thenReturn("something fetched");
assertEquals("something fetched", myService.get());
}
}
我明白,显然在第一种情况下 when(...).thenReturn() 将在每次测试之前运行,而在第二种情况下只会运行一次。但这是唯一的考虑吗?
此外,是否有必要让它运行不止一次?我应该在每种方法之后进行任何清理吗?