Тесты для метода, который пишет в файл в Java - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть метод, который пишет в файл с заданным именем.Нужно ли тестировать этот метод и, если да, то для чего мне его тестировать?

public void record(Object o){
    try{

        FileWriter fileStream = new FileWriter("data.txt", true);
        BufferedWriter out = new BufferedWriter(fileStream);

        out.write(o.toString());
        out.newLine();  
        out.close();

    } catch (Exception e){
        System.err.println("Error: " + e.getMessage());
    }
}

Ответы [ 4 ]

3 голосов
/ 18 февраля 2012

Вопрос о том, нужно ли вам тестировать, является вопросом для вашего руководителя проекта.Если определено, что вы должны написать несколько тестов, то я бы протестировал по крайней мере эти случаи

  • Счастливый путь (напишите хороший объект, проверьте содержимое файла впоследствии)
  • Что происходит снулевой аргумент (файл существует? что в нем? он закрывается?)
  • Что происходит, если метод вызывается несколько раз?
  • Что происходит, если файл уже существует, но недоступен для записи
2 голосов
/ 18 февраля 2012

Тесты всегда приветствуются, но в этом случае может быть полезен тщательный анализ кода.Трудно написать тест, который обнаружил бы, что:

  • out может не закрываться должным образом, что приводит к утечке файловых дескрипторов, т. Е. Когда o.toString() выдает исключение

  • если выдает исключение, трассировка стека будет потеряна (неправильная обработка исключения)

  • как должен вести себя метод, еслиObject o не отменяет toString() это должно заботить?

2 голосов
/ 18 февраля 2012

Ответ на вопрос «Должен ли я это проверить?»всегда "ДА".Теперь вы можете быть не в состоянии или не знать, как, или у вас есть время, или вам позволено, или вы хотите, но это не меняет ответа.

1 голос
/ 18 февраля 2012

Еще пара советов по проверке кода: out.close() должно быть в блоке finally (с его собственным try / catch), вы можете проверить входной параметр для здравомыслия, вы можете проверить, есть ли файл существует и доступен для записи. Кроме того, что произойдет, если o - это String со своими собственными символами новой строки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...