Skip to content

Commit e1281e5

Browse files
committed
Add test for verifying static field serialization
1 parent f819281 commit e1281e5

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

src/test/java/pl/mperor/interview/tasks/QuizQuestionsTest.java

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package pl.mperor.interview.tasks;
22

33
import org.junit.jupiter.api.AfterEach;
4+
import org.junit.jupiter.api.Assertions;
45
import org.junit.jupiter.api.BeforeEach;
56
import org.junit.jupiter.api.Test;
67

7-
import java.io.ByteArrayOutputStream;
8-
import java.io.PrintStream;
8+
import java.io.*;
99
import java.math.BigDecimal;
10+
import java.nio.file.Files;
1011
import java.util.Arrays;
1112
import java.util.Comparator;
1213
import java.util.stream.IntStream;
@@ -318,4 +319,36 @@ public void testInstanceofIsNull() {
318319
assertFalse(null instanceof Object);
319320
assertTrue("null" instanceof Object);
320321
}
322+
323+
@Test
324+
public void testStaticFieldsSerialization() throws IOException, ClassNotFoundException {
325+
// Can static variables be serialized in Java?
326+
327+
var example = new Example(1);
328+
var file = Files.createTempFile("example", ".dat").toFile();
329+
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
330+
oos.writeObject(example);
331+
}
332+
333+
// Changes
334+
example.instanceVar = 2;
335+
Example.staticVar = 20;
336+
337+
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
338+
Example deserialized = (Example) ois.readObject();
339+
Assertions.assertEquals(1, deserialized.instanceVar);
340+
Assertions.assertEquals(20, Example.staticVar, "Static variables are not serialized");
341+
}
342+
}
343+
344+
static class Example implements Serializable {
345+
@Serial
346+
private static final long serialVersionUID = 1L;
347+
private static int staticVar = 10;
348+
private int instanceVar;
349+
350+
Example(int instanceVar) {
351+
this.instanceVar = instanceVar;
352+
}
353+
}
321354
}

0 commit comments

Comments
 (0)