Как написать тесты для моих статических методов? - PullRequest
1 голос
/ 05 октября 2019

В классе Fileoperator я попытался создать пару методов, чтобы включить сохранение (из входных данных с экрана в текстовый файл) и загрузку (из одного и того же текстового файла и распечатать его на экране). Поскольку оба они являются статическими методами, я не могу цитировать их непосредственно в моем FileoperatorTest. Как я могу написать тесты для них?

(я уже написал несколько тестов для Person.)

public class Fileoperator {
    private ArrayList<Person> saveList;
    private Scanner scanner;
    int age;
    String name;
    int income;
    int expenditure;
    int willingnesstoInvest;
    String exit;

    public Fileoperator() {
        saveList = new ArrayList<>();
        scanner = new Scanner(System.in);
        processOperations();
    }

    private void processOperations() {
        while (true) {
            Person personEntry = getPerson();

            if (exit.equals("yes")) {
                personEntry.updateMaster(age, name, income, expenditure, willingnesstoInvest);
                personResult(personEntry);
                break;
            }
            personEntry.updateMaster(age, name, income, expenditure, willingnesstoInvest);
            personResult(personEntry);
            System.out.println(personEntry.print());
        }
        for (Person p: saveList) {
            System.out.println(p.print());
        }
    }

    private Person getPerson() {
        Person personEntry = new Person(0, "", 0, 0, 0);
        System.out.println("Age: ");
        age = scanner.nextInt();
        scanner.nextLine();
        System.out.println("Name: ");
        name = scanner.nextLine();
        System.out.println("Income: ");
        income = scanner.nextInt();
        System.out.println("Expenditure:");
        expenditure = scanner.nextInt();
        System.out.println("Willingness to invest: ");
        willingnesstoInvest = scanner.nextInt();
        scanner.nextLine();
        System.out.println("done?(yes or no)");
        exit = scanner.nextLine();
        return personEntry;
    }

    private void personResult(Person p) {
        saveList.add(p);
    }

    public static void mainhelper() {
        try {
            printload(load());
        } catch (IOException e) {
            e.printStackTrace();
        }
        Fileoperator fo = new Fileoperator();
        try {
            fo.save();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void save() throws IOException {
        List<String> lines = Files.readAllLines(Paths.get("output.txt"));;
        PrintWriter writer = new PrintWriter("output.txt","UTF-8");
        for (Person p: saveList) {
            lines.add(p.getAge() + ", " + p.getName() + ", "
                    + p.getIncome() + ", " + p.getExpenditure() + ", " + p.getwillingnesstoInvest());
        }
        for (String line : lines) {
            ArrayList<String> partsOfLine = splitOnSpace(line);
            System.out.println("Age: " + partsOfLine.get(0) + ", ");
            System.out.println("Name: " + partsOfLine.get(1) + ", ");
            System.out.println("Income " + partsOfLine.get(2) + ", ");
            System.out.println("Expenditure " + partsOfLine.get(3) + ", ");
            System.out.println("WillingnesstoInvest " + partsOfLine.get(4) + ", ");
            writer.println(line);
        }
        writer.close(); //note -- if you miss this, the file will not be written at all.
    }

    public static ArrayList<String> splitOnSpace(String line) {
        String[] splits = line.split(", ");
        return new ArrayList<>(Arrays.asList(splits));
    }

    public static ArrayList<Person> load() throws IOException {
        List<String> lines = Files.readAllLines(Paths.get("output.txt"));
        ArrayList<Person> loadList = new ArrayList();
        for (String line : lines) {
            if (line.equals("")) {
                break;
            } else {
                Person fromline = fromline(line);
                loadList.add(fromline);
            }
        }
        return loadList;
    }

    public static void printload(ArrayList<Person> loadList) {
        for (Person p: loadList) {
            System.out.println(p.print());
        }
    }

    private static Person fromline(String line) {
        Person fromline = new Person(0, "", 0, 0, 0);
        ArrayList<String> partsOfLine = splitOnSpace(line);
        int age = Integer.parseInt(partsOfLine.get(0));
        int income = Integer.parseInt(partsOfLine.get(2));
        int expenditure = Integer.parseInt(partsOfLine.get(3));
        int willingnesstoInvest = Integer.parseInt(partsOfLine.get(4));
        fromline.updateMaster(age, partsOfLine.get(1), income, expenditure, willingnesstoInvest);
        return fromline;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...