Gson 是一个用于将 Java 对象转换为 JSON 字符串,以及将 JSON 字符串转换为 Java 对象的库。要对 Gson 进行单元测试,我们可以使用 JUnit 和 Mockito 这两个测试框架。以下是一个简单的示例,展示了如何使用这两个框架对 Gson 进行单元测试:
pom.xml
文件中添加以下依赖:<dependencies>
<!-- JUnit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<!-- Mockito -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.9.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Person
,用于在测试中使用:public class Person {
private String name;
private int age;
// 构造函数、getter 和 setter 方法
}
GsonUtil
,用于将 Person
对象转换为 JSON 字符串,以及将 JSON 字符串转换为 Person
对象:import com.google.gson.Gson;
public class GsonUtil {
private static final Gson GSON = new Gson();
public static String toJson(Person person) {
return GSON.toJson(person);
}
public static Person fromJson(String json) {
return GSON.fromJson(json, Person.class);
}
}
GsonUtilTest
,使用 JUnit 和 Mockito 对 GsonUtil
进行单元测试:import com.google.gson.Gson;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class GsonUtilTest {
@Mock
private Gson gson;
private GsonUtil gsonUtil;
@BeforeEach
void setUp() {
gsonUtil = new GsonUtil();
}
@Test
void toJson() {
Person person = new Person("John", 30);
String expectedJson = "{\"name\":\"John\",\"age\":30}";
when(gson.toJson(person)).thenReturn(expectedJson);
String actualJson = gsonUtil.toJson(person);
assertEquals(expectedJson, actualJson);
}
@Test
void fromJson() {
String json = "{\"name\":\"John\",\"age\":30}";
Person expectedPerson = new Person("John", 30);
when(gson.fromJson(json, Person.class)).thenReturn(expectedPerson);
Person actualPerson = gsonUtil.fromJson(json);
assertEquals(expectedPerson, actualPerson);
}
}
在这个示例中,我们使用了 JUnit 5 的 @ExtendWith(MockitoExtension.class)
注解来启用 Mockito 扩展,以便在测试中使用 Mockito 提供的功能。我们还使用了 @Mock
注解来创建一个 Gson
的模拟对象,并在测试方法中使用 when()
和 thenReturn()
方法来定义模拟对象的行为。
这样,我们就可以对 GsonUtil
类的 toJson()
和 fromJson()
方法进行单元测试了。