1+ import static org .junit .jupiter .api .Assertions .assertEquals ;
2+ import static org .junit .jupiter .api .Assertions .assertNull ;
3+
4+ import org .junit .jupiter .api .Test ;
5+
6+ import com .google .gson .Gson ;
7+ import com .google .gson .GsonBuilder ;
8+
9+ public class GsonUnitTest {
10+ @ Test
11+ public void givenUserObject_whenSerialized_thenCorrectJsonProduced () {
12+ User user =
new User (
"John Doe" ,
30 ,
"[email protected] " );
13+ user .setId (12345L );
14+
15+ Gson gson = new GsonBuilder ().excludeFieldsWithoutExposeAnnotation ()
16+ .create ();
17+ String json = gson .toJson (user );
18+
19+ // Verify that name, age, and id are serialized, but email is not
20+ assertEquals ("{\" firstName\" :\" John Doe\" ,\" age\" :30,\" id\" :12345}" , json );
21+ }
22+
23+ @ Test
24+ public void givenJsonInput_whenDeserialized_thenCorrectUserObjectProduced () {
25+ String jsonInput =
"{\" firstName\" :\" Jane Doe\" ,\" age\" :25,\" id\" :67890,\" email\" :\" [email protected] \" }" ;
26+
27+ Gson gson = new GsonBuilder ().excludeFieldsWithoutExposeAnnotation ()
28+ .create ();
29+ User user = gson .fromJson (jsonInput , User .class );
30+
31+ // Verify that name and age are deserialized, but email and id are not
32+ assertEquals ("Jane Doe" , user .getName ());
33+ assertEquals (25 , user .getAge ());
34+ assertEquals (0 , user .getId ());
35+ assertNull (user .getEmail ());
36+ }
37+
38+ @ Test
39+ public void givenJsonWithAlternateNames_whenDeserialized_thenCorrectNameFieldMapped () {
40+ String jsonInput1 =
"{\" firstName\" :\" Jane Doe\" ,\" age\" :25,\" id\" :67890,\" email\" :\" [email protected] \" }" ;
41+ String jsonInput2 =
"{\" fullName\" :\" John Doe\" ,\" age\" :30,\" id\" :12345,\" email\" :\" [email protected] \" }" ;
42+ String jsonInput3 =
"{\" name\" :\" Alice\" ,\" age\" :28,\" id\" :54321,\" email\" :\" [email protected] \" }" ;
43+
44+ Gson gson = new GsonBuilder ().excludeFieldsWithoutExposeAnnotation ()
45+ .create ();
46+
47+ User user1 = gson .fromJson (jsonInput1 , User .class );
48+ User user2 = gson .fromJson (jsonInput2 , User .class );
49+ User user3 = gson .fromJson (jsonInput3 , User .class );
50+
51+ // Verify that the name field is correctly deserialized from different JSON field names
52+ assertEquals ("Jane Doe" , user1 .getName ());
53+ assertEquals ("John Doe" , user2 .getName ());
54+ assertEquals ("Alice" , user3 .getName ());
55+ }
56+ }
0 commit comments