Как протестировать сеттера в JUnit?

#java #junit

Вопрос:

Я изучаю тест JUnit. Я хочу протестировать геттер и сеттер в JUnit, но это не работает. Это первый класс.

 public class Practice { private String name;  public Practice(String name) {  this.name = name; }  public String getName() {  return this.name; }  public void setName(String name) {  this.name = name; }  

} и это второй класс.

 import java.util.ArrayList;  public class Practice2 { private ArrayListlt;Practicegt; practice;  public Practice2() {  this.practice = new ArrayListlt;Practicegt;(); }  public ArrayListlt;Practicegt; getPractice() {  return this.practice; }  public void setPractice(ArrayListlt;Practicegt; practice) {  this.practice = practice; } }  

Параметром setPractice является ArrayList, поэтому я ввел в параметр объект класса практики, но он показывает ошибку.

 import org.junit.jupiter.api.Test;  public class testGetterAndSetter {  @Test public void testSetter() {  Practice2 aaa = new Practice2();  Practice bbb = new Practice("Hello");  aaa.setPractice(bbb.setName("A")); } }  

Как мне нужно измениться для тестирования сеттера и как я могу это проверить?

Комментарии:

1. bbb.setName("A") ничего не возвращает, но aaa.setPractice ожидает ArrayListlt;Practicegt; , таким образом, ошибку.

2. bbb.setName ничего не возвращает. Что именно вы пытаетесь установить? Проблема не в вашем тесте, скорее, в вашем непонимании того, что делает ваш код

3. Я хочу протестировать setPractice(ArrayList Что я должен вставить здесь вместо bbb.setName()?

Ответ №1:

Проблема заключается в следующем:

 aaa.setPractice(bbb.setName("A"));  

setPractice() требует аргумента ArrayList , но bbb.setName("A") возвращает void .

Ответ №2:

Если у вас нет действительно сложной логики в ваших геттерах и сеттерах (что, безусловно, не так), модульные тесты являются излишними, пустой тратой времени и компьютерных ресурсов при их выполнении.

Вместо этого сосредоточьтесь на своей бизнес-логике. Сосредоточьтесь на классах с не такой простой логикой, и это основа вашего приложения. Меньше внимания уделяйте достижению 100% — ного охвата тестированием и больше — тщательному тестированию основных частей вашего приложения.

Ответ №3:

Обычно вы тестируете сеттер в сочетании с тестированием соответствующего геттера.

Установите значение, затем получите его и посмотрите, получите ли вы обратно то, что вы вложили.

Конечно, такой тест настолько тривиален, что многие люди просто опускают его, но я существую в среде, где очень высокий охват тестированием является обязательным (и вы никогда не знаете, делает ли кто-то опечатку в сеттере в конце концов…), поэтому неплохо включить их (если, конечно, у вас нет чего-то вроде Ломбока, который генерирует геттеры и сеттеры для вас на лету).