提交 0cd54010 编写于 作者: W wizardforcel

2021-10-01 18:03:47

上级 f457f993
......@@ -82,7 +82,7 @@ MyDoc docMock;
替代方法是使用`Mockito.mock`方法,如下所示:
```java
MyDoc docMock = Mockito.*mock*(MyDoc.class)
MyDoc docMock = Mockito.mock(MyDoc.class)
```
以下各节包含使用上表中描述的 Jupiter 测试中的 Mockito API 的综合示例。
......@@ -92,7 +92,7 @@ MyDoc docMock = Mockito.*mock*(MyDoc.class)
在撰写本文时,还没有官方的 JUnit5 扩展在 Jupiter 测试中使用 Mockito。然而,JUnit5 团队提供了一个简单的现成 Java 类,实现了一个简单但有效的 Mockito 扩展。该类可以在 [JUnit5 用户指南](http://junit.org/junit5/docs/current/user-guide/)中找到,其代码如下:
```java
import static org.mockito.Mockito.*mock*;
import static org.mockito.Mockito.mock;
import java.lang.reflect.Parameter;
import org.junit.jupiter.api.extension.ExtensionContext;
......@@ -134,10 +134,10 @@ public class MockitoExtension
String mockName = getMockName(parameter);
if (mockName != null) {
return mocks.getOrComputeIfAbsent(mockName,
key -> *mock*(mockType, mockName));
key -> mock(mockType, mockName));
} else {
return mocks.getOrComputeIfAbsent(mockType.getCanonicalName(),
key -> *mock*(mockType));
key -> mock(mockType));
}
}
......@@ -344,10 +344,10 @@ public class LoginRepository {
package io.github.bonigarcia;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*verify*;
import static org.mockito.Mockito.*verifyNoMoreInteractions*;
import static org.mockito.Mockito.*verifyZeroInteractions*;
import static org.mockito.Mockito.*when*;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -371,29 +371,29 @@ class LoginControllerLoginTest {
@Test
void testLoginOk() {
// Setting expectations (stubbing methods)
*when*(loginService.login(userForm)).thenReturn(true);
when(loginService.login(userForm)).thenReturn(true);
// Exercise SUT
String reseponseLogin = loginController.login(userForm);
// Verification
assertEquals("OK", reseponseLogin);
*verify*(loginService).login(userForm);
*verifyNoMoreInteractions*(loginService);
verify(loginService).login(userForm);
verifyNoMoreInteractions(loginService);
}
@Test
void testLoginKo() {
// Setting expectations (stubbing methods)
*when*(loginService.login(userForm)).thenReturn(false);
when(loginService.login(userForm)).thenReturn(false);
// Exercise SUT
String reseponseLogin = loginController.login(userForm);
// Verification
assertEquals("KO", reseponseLogin);
*verify*(loginService).login(userForm);
*verifyZeroInteractions*(loginService);
verify(loginService).login(userForm);
verifyZeroInteractions(loginService);
}
}
......@@ -413,8 +413,8 @@ class LoginControllerLoginTest {
package io.github.bonigarcia;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.*any*;
import static org.mockito.Mockito.*when*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -445,7 +445,7 @@ class LoginControllerErrorTest {
@Test
void testLoginException() {
// Expectation
*when*(loginService.login(*any*(UserForm.class)))
when(loginService.login(any(UserForm.class)))
.thenThrow(IllegalArgumentException.class);
// Exercise
......@@ -470,8 +470,8 @@ class LoginControllerErrorTest {
package io.github.bonigarcia;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.*any*;
import static org.mockito.BDDMockito.*given*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -492,13 +492,13 @@ class LoginControllerBDDTest {
@Test
void testLoginOk() {
*given*(loginService.login(userForm)).willReturn(true);
given(loginService.login(userForm)).willReturn(true);
assertEquals("OK", loginController.login(userForm));
}
@Test
void testLoginKo() {
*given*(loginService.login(userForm)).willReturn(false);
given(loginService.login(userForm)).willReturn(false);
assertEquals("KO", loginController.login(userForm));
}
......@@ -509,7 +509,7 @@ class LoginControllerBDDTest {
@Test
void testLoginException() {
*given*(loginService.login(*any*(UserForm.class)))
given(loginService.login(any(UserForm.class)))
.willThrow(IllegalArgumentException.class);
assertEquals("ERROR", loginController.login(userForm));
}
......@@ -531,11 +531,11 @@ package io.github.bonigarcia;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.*any*;
import static org.mockito.Mockito.*atLeast*;
import static org.mockito.Mockito.*times*;
import static org.mockito.Mockito.*verify*;
import static org.mockito.Mockito.*when*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -556,21 +556,21 @@ class LoginServiceTest {
@Test
void testLoginOk() {
*when*(loginRepository.login(*any*(UserForm.class))).thenReturn(true);
when(loginRepository.login(any(UserForm.class))).thenReturn(true);
assertTrue(loginService.login(userForm));
*verify*(loginRepository, *atLeast*(1)).login(userForm);
verify(loginRepository, atLeast(1)).login(userForm);
}
@Test
void testLoginKo() {
*when*(loginRepository.login(*any*(UserForm.class))).thenReturn(false);
when(loginRepository.login(any(UserForm.class))).thenReturn(false);
assertFalse(loginService.login(userForm));
*verify*(loginRepository, *times*(1)).login(userForm);
verify(loginRepository, times(1)).login(userForm);
}
@Test
void testLoginTwice() {
*when*(loginRepository.login(userForm)).thenReturn(true);
when(loginRepository.login(userForm)).thenReturn(true);
assertThrows(LoginException.class, () -> {
loginService.login(userForm);
loginService.login(userForm);
......@@ -592,7 +592,7 @@ class LoginServiceTest {
package io.github.bonigarcia;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*verify*;
import static org.mockito.Mockito.verify;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -619,7 +619,7 @@ class LoginServiceChaptorTest {
@Test
void testArgumentCaptor() {
loginService.login(userForm);
*verify*(loginRepository).login(argCaptor.capture());
verify(loginRepository).login(argCaptor.capture());
assertEquals(userForm, argCaptor.getValue());
}
......@@ -1111,7 +1111,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MySpringBootApplication {
final Logger log = LoggerFactory.*getLogger*(MySpringBootApplication.class);
final Logger log = LoggerFactory.getLogger(MySpringBootApplication.class);
@Autowired
public MessageComponent messageComponent;
......@@ -1170,7 +1170,7 @@ class SimpleSpringBootTest {
```java
package io.github.bonigarcia;
import static org.springframework.web.bind.annotation.RequestMethod.*GET*;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
......@@ -1182,7 +1182,7 @@ public class WebController {
@Autowired
private PageService pageService;
@RequestMapping(value = "/", method = *GET*)
@RequestMapping(value = "/", method = GET)
public String greeting() {
return pageService.getPage();
}
......@@ -1220,10 +1220,10 @@ public class PageService {
```java
package io.github.bonigarcia;
import static org.hamcrest.core.StringContains.*containsString*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*get*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*content*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*status*;
import static org.hamcrest.core.StringContains.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -1243,9 +1243,9 @@ class IndexTest {
@Test
void testIndex() throws Exception {
mockMvc.perform(*get*("/index.html")).andExpect(*status*().isOk())
.andExpect(*content*().contentType("text/html")).andExpect(
*content*().string(*containsString*("This is index
mockMvc.perform(get("/index.html")).andExpect(status().isOk())
.andExpect(content().contentType("text/html")).andExpect(
content().string(containsString("This is index
page")));
}
......@@ -1263,10 +1263,10 @@ class IndexTest {
```java
package io.github.bonigarcia;
import static org.mockito.Mockito.*doReturn*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*get*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*redirectedUrl*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*status*;
import static org.mockito.Mockito.doReturn;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -1290,9 +1290,9 @@ class RedirectTest {
@Test
void test() throws Exception {
*doReturn*("redirect:/page.html").when(pageService).getPage();
mockMvc.perform(*get*("/")).andExpect(*status*().isFound())
.andExpect(*redirectedUrl*("/page.html"));
doReturn("redirect:/page.html").when(pageService).getPage();
mockMvc.perform(get("/")).andExpect(status().isFound())
.andExpect(redirectedUrl("/page.html"));
}
}
......@@ -1398,7 +1398,13 @@ driver.get("http://junit.org/junit5/");
定位元素:它允许使用不同的策略识别网页(WebElement)中的元素:按 id、名称、类名、CSS 选择器、链接文本、标记名或 XPath
```java
WebElement webElement = driver.findElement(By.*id("id"));* driver.findElement(By.*name("name"));* driver.findElement(By.*className("class"));* driver.findElement(By.*cssSelector("cssInput"));* driver.findElement(By.*linkText("text"));* driver.findElement(By.*tagName("tag name"));* driver.findElement(By.*xpath("/html/body/div[4]"));*
WebElement webElement = driver.findElement(By.id("id"));
driver.findElement(By.name("name"));
driver.findElement(By.className("class"));
driver.findElement(By.cssSelector("cssInput"));
driver.findElement(By.linkText("text"));
driver.findElement(By.tagName("tag name"));
driver.findElement(By.xpath("/html/body/div[4]"));
```
与元素交互:从给定的 WebElement,我们可以执行不同类型的自动交互,例如单击元素、键入文本或清除输入字段、读取属性等。
......@@ -1995,8 +2001,8 @@ dependencies {
```java
package io.github.bonigarcia;
import static io.restassured.RestAssured.*given*;
import static org.hamcrest.Matchers.*equalTo*;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
import org.junit.jupiter.api.Test;
public class PublicRestServicesTest {
......@@ -2012,10 +2018,10 @@ import org.junit.jupiter.api.Test;
@Test
void testCountryService() {
*given*().when()
given().when()
.get("http://services.groupkt.com/country/get/iso2code/ES")
.then().assertThat().statusCode(200)
.body("RestResponse.result.name", *equalTo*("Spain"));
.body("RestResponse.result.name", equalTo("Spain"));
}
}
......@@ -2058,20 +2064,20 @@ public class MyRestController {
@Autowired
private LibraryService libraryService;
@RequestMapping(value = "/books", method = RequestMethod.*GET*)
@RequestMapping(value = "/books", method = RequestMethod.GET)
public List<Book> getBooks() {
return libraryService.getBooks();
}
@RequestMapping(value = "/book/{index}", method = RequestMethod.*GET*)
@RequestMapping(value = "/book/{index}", method = RequestMethod.GET)
public Book getTeam(@PathVariable("index") int index) {
return libraryService.getBook(index);
}
@RequestMapping(value = "/book", method = RequestMethod.*POST*)
@RequestMapping(value = "/book", method = RequestMethod.POST)
public ResponseEntity<Boolean> addBook(@RequestBody Book book) {
libraryService.addBook(book);
return new ResponseEntity<Boolean>(true, HttpStatus.*CREATED*);
return new ResponseEntity<Boolean>(true, HttpStatus.CREATED);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册