2016-05-24 2 views
-2

У меня есть следующий метод, который я хотел бы проверить, это просто приращение int если Boolean условие истинно:Как протестировать int был увеличен с помощью Junit?

public void incrementIfConditionMet(Boolean personCheckedIn) { 

    int peopleInHotel=0; 

    if (personCheckedIn==true){ 

     peopleInHotel++ 

    } 

} 

Я очень новой для модульного тестирования в Java. Как я могу это сделать, чтобы проверить, был ли int увеличен или нет?

+1

Если это не свойство или возвращаемое значение, как бы вы получить доступ? Вам нужно было бы разместить его где-нибудь, где он мог бы быть доступен, например, сделать публичный геттер или поставить его как возвращаемое значение. – Draken

+0

Я не уверен, что вы имеете в виду, пожалуйста, дайте пример кода? – java123999

+1

Вы должны проверить публичный api класса. если у вас есть функция getPeopleInHotel, вы должны иметь возможность assertEquals (getPeopleInHotel(), ожидаемый); – JohannisK

ответ

6

В настоящее время ваше значение peopleInHotel невозможно получить вне метода, так как оно было создано внутренне. Если вы хотите получить доступ, вы должны сделать следующее:

private int peopleInHotel=0; 

public int getPeopleInHotel() { 
    return peopleInHotel; 
} 

public void incrementIfConditionMet(Boolean personCheckedIn) { 
    if (personCheckedIn){ 
     peopleInHotel++ 
    } 
} 

Теперь в тестовом классе, вы можете проверить, позвонив getPeopleInHotel();

Так что тест будет:

int initalValue = classInstance.getPeopleInHotel(); 
classInstance.incrementIfConditionMet(true); 
assertEquals(classInstance.getPeopleInHotel(), initalValue +1); 

Это также устранит проблему, когда вы не сохраните значение после запуска метода. На данный момент, в вашей текущей настройке кода, ваша переменная peopleInHotel будет отброшена после того, как вы закончите с этим методом.

+0

ОК спасибо, но как мне написать тест, чтобы проверить int? – java123999

+2

Это в примере ... assertEquals (getPeopleInHotel(), expectedQuantity); Вы должны посмотреть на некоторые учебные пособия, если вы не знаете, как это реализовать. в этом примере вы должны создать экземпляр, вызвать incrementIfConditionMet (false), утвердить с ожидаемым значением Q 0, затем вызвать incrementIfConditionMet (true), затем утвердить с помощью ожидаемогоQuentity 1 – JohannisK

+0

Я обновил тестовый пример, вам нужно получить предыдущее значение, а затем проверьте его на новое значение после того, как вы запустили свой метод. – Draken

0
int peopleInHotel=0; 

public void incrementIfConditionMet(Boolean personCheckedIn) { 
    if (personCheckedIn==true){ 

     peopleInHotel++ 

    } 
} 

public int getPeopleInHotel() { //test the returned value after you've incremented 
    return peopleInHotel; 
} 
0

Попробуйте так:

public class Hotel { 
    private int peopleInHotel = 0; 

    //a constructor... 

    public int getPeopleInHotel() { 

     return this.peopleInHotel; 

    } 

public void incrementIfConditionMet(Boolean personCheckedIn) { 
     if (personCheckedIn==true){ 
      peopleInHotel++ 
     } 
} 
} 

В вашем модульного тестирования, теперь вы можете сделать что-то вроде этого:

//defining your TestCase 
Hotel hotel = new Hotel(); 
int initValue = hotel.getPepleInHotel(); 
hotel.incrementIfconditionmet(true); 
assertEquals(hotel.getPeopleInHotel(),initValue+1); 
Смежные вопросы