#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:
Обычно вы тестируете сеттер в сочетании с тестированием соответствующего геттера.
Установите значение, затем получите его и посмотрите, получите ли вы обратно то, что вы вложили.
Конечно, такой тест настолько тривиален, что многие люди просто опускают его, но я существую в среде, где очень высокий охват тестированием является обязательным (и вы никогда не знаете, делает ли кто-то опечатку в сеттере в конце концов…), поэтому неплохо включить их (если, конечно, у вас нет чего-то вроде Ломбока, который генерирует геттеры и сеттеры для вас на лету).