#java #unit-testing #junit #junit5
#java #модульное тестирование #юнит #junit5
Вопрос:
Что ж, это первый раз, когда я провожу тестирование. Код, который у меня есть, следующий:
public abstract class Value<T>
{
private T value;
public Value(T aValue) {
this.value = value;
}
public T value() {
return value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Value<?> that = (Value<?>) o;
return Objects.equals(value, that.value);
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
Затем я создаю класс, расширяющийся от вышеупомянутого класса:
public class DateOfBirth extends Value<LocalDate>
{
private DateOfBirth(LocalDate aDate) {
super(aDate);
}
public static DateOfBirth of(LocalDate aDate) {
return new DateOfBirth(aDate);
}
}
Наконец я запустил следующий текст, но он не прошел.
public class DateOfBirthUnitTest
{
@Test
public void birthDateShouldBeInstanceFromLocalDate() {
DateOfBirth theActual = DateOfBirth.of(LocalDate.of(1997, 12, 10));
assertNotNull(theActual.value()); //This test is failing
}
}
Почему вызов «theActual.value()» возвращает нулевое значение? Как я могу это решить?
Спасибо.
Комментарии:
1. Я предлагаю использовать хорошую среду разработки, такую как eclipse, IntelliJ, и использовать такие инструменты, как SonarLint, он найдет такие ошибки для вас, как только вы сохраните код…
Ответ №1:
Ошибка ввода …??
изменить
public Value(T aValue) {
this.value = value;
}
Для
public Value(T value) {
this.value = value;
}
и это должно сработать!