Как можно использовать в качестве аргументов созданную функцию в параметризованных тестах?
public class Radio {
private int numberRadioStation;
private int soundVolume;
public int getNumberRadioStation() {
return numberRadioStation;
}
public void setNumberRadioStation(int newNumberRadioStation) {
if (newNumberRadioStation < 0 || newNumberRadioStation > 9) {
return;
}
this.numberRadioStation = newNumberRadioStation;
}
Для тестирования я использую следующий алгоритм
public class RadioTest {
@Test
public void shouldNotExistChannel() {
Radio rad = new Radio();
rad.setNumberRadioStation(10);
int expected = 0;
int actual = rad.getNumberRadioStation();
Assertions.assertEquals(expected, actual);
}
В переменную setNumberRadioStation необходимо подставить несколько разных значений. Как можно использовать этот сеттер в параметризованных тестах?
Ответы (1 шт):
Автор решения: Roman-Stop RU aggression in UA
→ Ссылка
В junit 5 есть много вариантов. Например, параметры можно задавать в аннотации на методе:
@ParameterizedTest
@ValueSource(ints = {-1, 10})
public void shouldNotExistChannel(int numberRadioStation) {
Radio rad = new Radio();
rad.setNumberRadioStation(numberRadioStation);
int expected = 0;
int actual = rad.getNumberRadioStation();
Assertions.assertEquals(expected, actual);
}
Или с помощью отдельного метода:
private static Stream<Arguments> provideNonExistingNumbers() {
return Stream.of(
Arguments.of(-1),
Arguments.of(10)
);
}
@ParameterizedTest
@MethodSource("provideNonExistingNumbers")
public void shouldNotExistChannel(int numberRadioStation) {
Radio rad = new Radio();
rad.setNumberRadioStation(numberRadioStation);
int expected = 0;
int actual = rad.getNumberRadioStation();
Assertions.assertEquals(expected, actual);
}