создание модульного тестирования для записи в файл методом в junit. - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь написать тестовые методы в Intellij с помощью jUnit.Я могу успешно записать в файл, однако мне нужно показать, что я могу написать метод теста для этого.Я нажимаю в направлении записи было бы здорово.Мой класс ServerController записывает в файл, проверяет файл на имя пользователя и проверяет имя пользователя и пароль.Этот проект предназначен для класса, и, похоже, самый важный урок - изучение документации (требования, дизайн и тестирование).Итак, я пытаюсь проверить.

package appLayer;

import java.io.*;
import java.util.Scanner;

public class ServerController {
    public void writetoFile(String writeUsername, String writePassword) throws IOException {
        PrintWriter fileWriting = new PrintWriter(new FileOutputStream("/Users/dannielsotelo/Documents/database.txt", true));
        fileWriting.println(writeUsername + "," + writePassword); //
        System.out.println(writeUsername + " was saved to database.txt");
        fileWriting.close();
    }

    public boolean findUsername(String fUsername) {
        File file = new File("/Users/dannielsotelo/Documents/database.txt");
        try{
            Scanner scanner = new Scanner(file);
            int lineNum = 0;
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                lineNum++;
                if(line.contains(fUsername))
                    return true;
            }
        } catch (FileNotFoundException e) {
            System.out.println("File not found");
        }
        return false;
    }

    public boolean verifyCredentials(String lUsername, String lPassword) {
        File file = new File("/Users/dannielsotelo/Documents/database.txt");
        try{
            Scanner scanner = new Scanner(file);
            int lineNum = 0;
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                lineNum++;
                if(line.contains(lUsername) && line.contains(lPassword))
                    return true;
            }
        } catch (FileNotFoundException e) {
            System.out.println("File not found");
        }
        return false;
    }
}

и мой класс ServerControllerTest

package appLayer;

import org.junit.Test;


import static org.junit.Assert.*;

public class ServerControllerTest {
    @Test
    public void testwritetoFile() {
    }

    @Test
    public void findUsername() {
    }

    @Test
    public void verifyCredentials() {


    }
}

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Во-первых, вы должны избавиться от лишнего кода при сканировании файлов.Было бы достаточно иметь метод one , который ищет произвольные строки, так как технически это не имеет значения, если вы ищете имя пользователя или пароль.

Во-вторых, для целей тестирования вам действительно не следует жестко кодировать файл базы данных.При написании тестов JUnit вы не хотите, чтобы ваш фактический файл был записан или прочитан.Передайте файл или путь к нему в качестве параметра конструктора.

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

PS .: С точки зрения безопасности, подход к проверке, содержит ли строка имя пользователя и пароль, немного провален: D

0 голосов
/ 26 мая 2018

Поиск на этом форуме для тестирования пустых методов.Но, в любом случае, ваш код не очень хорошо тестируется.Хотя вы можете тестировать методы, которые возвращают какое-то значение, вы не даете ему достаточно начальных условий, чтобы убедиться, что они делают то, что вы хотите.Не указывайте путь к файлам в методе, вам будет лучше, если это аргумент метода.Тогда в тестах вы можете быть уверены, что если вы создадите файл с указанным содержимым, метод сделает то или иное или сгенерирует исключение, если вы вообще не создадите файл.

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