Проблема в том, что у вас есть код в ваших serialize
и deserialize
методах, которые там не принадлежат. Они слишком широки: они не только сериализуют и десериализуют объекты (хотя код для десериализации, по-видимому, отсутствует), они также открывают средства выбора файлов.
Хотя это может иметь смысл с точки зрения потока программ, оно также нарушает принцип единственной ответственности (примечание: я знаю, что SRP обычно применяется к классу, а не к методу) , Ваши методы делают слишком много вещей.
Таким образом, вы должны написать свои методы таким образом, чтобы они принимали File
или InputStream
в качестве входного параметра и возвращали коллекцию объектов в результате (для десериализации), или принимали коллекцию объектов и вернуть OutputStream
как результат (для сериализации). Таким образом, вы можете проверить именно это поведение.
Еще лучше было бы сначала написать тест, где вы могли бы, например, использовать тестовый файл, оба из которых можно прочитать, чтобы проверить, производит ли он ожидаемые объекты, или вы проверяете, что ByteOutputStream
, возвращаемый сериализатором, соответствует тому, что тот же файл.
Это называется разработка через тестирование , и это хороший способ написать тестируемый и стабильный код.