Как эффективно тестировать методы с помощью JUnit

1

Мой первый метод прост, его просто toString который выводит 3 класса конкретных полей

public String toString(){
    return String.format("%s/%s/%s",street,city,postcode);
}

В JUnit это дает мне возможность сформировать тесты, я не уверен, как это сделать эффективно.

@Test
public void testToString() {
    System.out.println("toString");
    Address instance = null;
    String expResult = "";
    String result = instance.toString();
    assertEquals(expResult, result);
    // TODO review the generated test code and remove the default call to fail.
    fail("The test case is a prototype.");
}

Я провел много исследований по JUnit и понял концепцию тестирования, но не могу понять, как это сделать с моим кодом. Также как бы я мог эффективно протестировать этот метод, это метод в подклассе, который является абстрактным методом в родительском классе

@Override
int getDiscountRate() {
   return this.companyDiscount; 
}

Это дает мне возможность проверить

@Test
public void testGetDiscountRate() {
    System.out.println("getDiscountRate");
    BusinessOrganisationDetails instance = null;
    int expResult = 0;
    int result = instance.getDiscountRate();
    assertEquals(expResult, result);
    // TODO review the generated test code and remove the default call to fail.
    fail("The test case is a prototype.");
}
  • 1
    Что касается второй части вашего вопроса, касающейся getDiscountRate (), мы обычно не тестируем методы getters / setters, поскольку они почти всегда генерируются IDE и не должны изменяться. Что касается модульного тестирования, вы обязательно должны прочитать о платформе Mockito.
  • 0
    Спасибо, сэр, сейчас я проверю рамки Mockito
Показать ещё 1 комментарий
Теги:
testing
junit

1 ответ

1
Лучший ответ

Это выглядит хорошо. Конечно, вам нужно инициализировать переменные экземпляра, иначе это приведет к исключению NullPointerException.

Здесь, как это могло бы выглядеть в конце:

@Test
public void testToString() {
    System.out.println("toString");
    Address instance = new Address();
    instance.setStreet("Somestreet");
    instance.setCity("Somecity");
    instance.setPostcode("12345");
    String expResult = "SomestreetSomecity12345";
    String result = instance.toString();
    assertEquals(expResult, result);
}

И другой тест:

@Test
public void testGetDiscountRate() {
    System.out.println("getDiscountRate");
    BusinessOrganisationDetails instance = new BusinessOrganisationDetails();
    instance.setCompanyDiscount(50);
    int expResult = 50;
    int result = instance.getDiscountRate();
    assertEquals(expResult, result);
}
  • 0
    ааа это интересно Скажем, у меня есть вся моя информация, такая как улица, город и почтовый индекс, помещенные в текстовый файл. Можно ли их использовать для проверки? или установка случайного поля - лучший способ это сделать? Также при тестировании я должен сделать несколько тестов по одному методу? и если да, то как бы я сделал это для метода tostring?
  • 1
    Не с тестами JUnit. Здесь вы делаете утверждения прямо в коде. Нет общего ответа на ваш вопрос о тестировании метода несколько раз. Это зависит от того, что делает этот метод. В этом случае достаточно одного теста. В других случаях, особенно если в тестируемых методах есть операторы if / else, необходимо несколько тестов, чтобы получить 100% тестовое покрытие вашего кода.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню