У меня имеется метод:
protected double getAbsoluteValue(int omega) throws Exception {
if(omega<-2) throw new Exception("The number is less than 10^-2, current value: "+ pow(10,omega));
if(omega>3) throw new Exception("The number is more than 10^3, current value: "+ pow(10,omega));
int a = getTimeConstantInDenominator()* getTimeConstantInDenominator();
double b = pow(pow(10,omega),2);
double den =(b * a)+1;
return numerator/ sqrt(den);
}
Я его тестирую с помощью JUnit4.
@org.junit.Test
public void getAbsoluteValue() throws Exception {
int omega = 1;
FilterTest filterTest = new LowPathFilter(1,1,1);
long actual = (long)filterTest.getAbsoluteValue(omega);
long expected = (long)(1/Math.sqrt(1*Math.pow(10,2)-1));
Assert.assertEquals(expected, actual);
}
Вот только не могу понять как мне протестировать два исключительных случая.
Есть хорошая библиотека для ассертов - AssertJ.
С Assertj тестирование исключений выглядит таким образом :
FilterTest filterTest = new LowPathFilter(1,1,1);
assertThatThrownBy(() -> filterTest.getAbsoluteValue(-3))
.isInstanceOf(RuntimeException.class)
.hasMessageContaining("The number is less than 10^-2, current value: ");
Тест без проверки сообщения:
@org.junit.Test(expected = Exception.class)
public void shouldThrowException() throws Exception {
final int invalidValue = -6;
YourClass yourClass = new YourClass();
yourClass.getAbsoluteValue(invalidValue);
fail("Тест должен не пройти, если мы не получили ошибку до этой строки");
}
Лучше выкидывать IllegalArgumentException
вместо Exception
Еще один варинт
@org.junit.Test
public void shouldThrowException() {
final int invalidValue = -6;
YourClass yourClass = new YourClass();
try {
yourClass.getAbsoluteValue(invalidValue);
fail("Тест должен не пройти, если мы раньше не получили ошибку");
} catch (Exception e) {
Assert.assertEquals(expectedMessage, e.getMessage());
}
}
Если есть вожможность лучше искользуйте jUnit5
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хочу протестить свой кодЛично я ошибок не нахожу(почти), другие люди находят
Подскажите пожалуйста, как добавить иконки к пунктам меню, которые расположены в системном трее (в данном случае к пункту "Профиль")В официальном...
Какой язык быстрее java или scala, допустим есть две программы написанные по тому же алгоритму только одна написана на Java а другая на scala, какая...