在Junit5中,有對一些Junit的測試的註解進行調整
比如說
| Junit4 | Junit5 |
---|
測試用框架的選擇 | @RunWith(MockitoJUnitRunner.class) | @ExtendWith(MockitoExtension.class) |
當測試會使用到SprintBoot框架時,應該要使用@ExtendWith(SpringExtension.class),@MockBean來調用
若測試不想涉及SprintBoot的時候@ExtendWith(MockitoExtension.class),以及@Mock, @InjectMocks,並且使用MockMvcBuilders.standaloneSetup來設置獨立測試,以下是Code的示範
1
2
3
4
5
6
7
8
| <!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.assertj.core.api.Assertions;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Hoxton on 2022/11/30
*/
@ExtendWith(MockitoExtension.class)
public class UserControllerTest {
@Mock //Controller調用的Service
UserService userService;
@InjectMocks //要測試的Cotroller
UserController userController;
MockMvc mockMvc; //模擬Mvc
@BeforeEach
public void setMockMvc(){
MockMvcBuilders.standaloneSetup(userController).build();
}
@Test
void testMethod_situation_returnWhat(){
given(someObject.someMethod()).willReturn("someting");
// ... 設置
MockHttpServletResponse response = mvc.perform(get("someUrl")).andReturn().getResponse();
assertThat("something").isEqualTo("thatThing");
}
}
|