тестирование метода с другим методом из того же класса - PullRequest
0 голосов
/ 04 июля 2019

Извините, если это дубликат, но всякий раз, когда я пытаюсь найти его, я получаю результаты о «методе тестирования, который вызывает другие методы», который я не пытаюсь уточнить.

Студент здесь. Мне интересно, является ли тестирование метода с другим методом из того же класса на самом деле приемлемым подходом? По некоторым причинам, это дает мне это "отрывочное чувство". Поэтому я хотел убедиться.

Например:

    @BeforeClass
    public void setUp(){
         appointment = new Appointment("CO","Live & Die",
                "10/21/1999 18:00", "10/21/2099 00:00");
    }

    @Test
    public void addAppointmentMethodIncrementsTheNumOfSavedAppointments(){
        AppointmentBook appointmentBook = new AppointmentBook();
        assertEquals(0, appointmentBook.currentNumOfAppointments());
        appointmentBook.addAppointment(appointment);
        assertEquals(1, appointmentBook.currentNumOfAppointments());
    }

    @Test
    public void addAppointmentMethodSavesTheAppointmentInTheList(){
        AppointmentBook appointmentBook = new AppointmentBook();
        appointmentBook.addAppointment(appointment);
        boolean result = appointmentBook.checkIfAppointmentAlreadyExists(appointment);
        assertEquals(true,result);
    }  

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

  • Можете ли вы сказать, что метод addAppointment() хорошо протестирован в этом дело?
  • или я действительно проверяю checkIfAppointmentAlreadyExists() метод?
  • Может ли метод испытаний на самом деле проверить оба и все еще считаться приемлемой единицей тест?

Вот код, который я пытаюсь проверить, для справки

public class AppointmentBook {
    ArrayList<Appointment> allAppointments = null;

    public AppointmentBook(){
        allAppointments = new ArrayList<Appointment>();
    }

    public int currentNumOfAppointments() {
        return this.allAppointments.size();
    }


    public void addAppointment(Appointment appointment) {
        this.allAppointments.add(appointment);
    }

    public boolean checkIfAppointmentAlreadyExists(Appointment appointment) {
        return this.allAppointments.contains(appointment);
    }
}

1 Ответ

1 голос
/ 04 июля 2019

Совершенно нормально включать несколько методов в один тестовый пример, если они принадлежат одному и тому же классу. Потому что наименьшая единица - Класс , а не метод () . И это тестовый блок.

Во втором тестовом примере вы проверяете оба метода: addAppointment и checkIfAppointmentAlreadyExists. Он охватывает два поведения одновременно, что, на мой взгляд, является хорошей практикой.

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