Ошибка java.lang.NullPointerException при тестировании

130
05 января 2020, 09:10

ошибка возникает в этом тесте:

@Test
public void colorToString() {
    Veget color = new Veget("сolor");
    assertEquals("Бесцветный", color.colorToString());//23
}

23-я строчка показана в коде(коммент.), а 67-я строчка вот:

инициализация переменной color(класс Veget):

    import Enumeration.Color;
import Enumeration.Vegetable;
import java.util.Random;
public class Veget extends Item {
    private Color color;
    private Vegetable vegetable;

    public Veget() {
        super("Enums.Vegetable");
    }
    public Veget(String name) {
        super(name);
    }
    public Veget (String name, Color color, Vegetable vegetable) {
        super (name);
        this.color = color;
        this.vegetable = vegetable;
    }
    public void setColor (Color color) {
        this.color = color;
    }
    public void setVegetable (Vegetable vegetable) {
        this.vegetable = vegetable;
    }
    public Color getColor () {
        return this.color;
    }
    public Vegetable getVegetable() {
        return this.vegetable;
    }
    public void setRandVeget() {
        int rand = new Random().nextInt(9);
        switch (rand) {
            case 0: setColor(Color.RED); break;
            case 1: setColor(Color.GREEN); break;
            case 2: setColor(Color.BLUE); break;
            case 3: setColor(Color.PURPLE); break;
            case 4: setColor(Color.YELLOW); break;
            case 5: setColor(Color.VIOLET); break;
            case 6: setColor(Color.BROWN); break;
            case 7: setColor(Color.CYAN); break;
            case 8: setColor(Color.PINK); break;
        }
        rand = new Random().nextInt(5);
        switch (rand) {
            case 0: setVegetable(Vegetable.CARROT); break;
            case 1: setVegetable(Vegetable.CORN); break;
            case 2: setVegetable(Vegetable.POTATO); break;
            case 3: setVegetable(Vegetable.TOMAT); break;
            case 4: setVegetable(Vegetable.CUCUMBER); break;
        }
    }
    public String colorToString() {
        switch (color) {
            case RED: return "Красный";
            case GREEN: return "Зелёный";
            case BLUE: return "Голубой";
            case PURPLE: return "Фиолетовый";
            case YELLOW: return "Жёлтый";
            case VIOLET: return "Сиреневый";
            case BROWN: return "Коричневый";
            case CYAN: return "Бирюзовый";
            case PINK: return "Розовый";
        }
        return "Бесцветный";
    }
    public String vegetableToString() {
        switch (vegetable) {
            case CARROT: return "Морковь";
            case CORN: return "Кукуруза";
            case POTATO: return "Картофель";
            case TOMAT: return "Помидор";
            case CUCUMBER: return "Огурец";
        }
        return "Овощ";
    }
}
Answer 1

Вы передаете в конструктор String и срабатывает конструктор String , однако при этом, инициализиции color не происходит, поскольку вы просто передаете String в конструктор Item.

Поставьте начальное значение color :

private Color color = ...;

и если вы правильно реализовали остальную структуру, как задумали, должно получиться

Answer 2

Вы вызываете конструктор Veget(String name), который инициализирует name, но color так и остается null

READ ALSO
Как создать ожидающий поток в Java?

Как создать ожидающий поток в Java?

Пишу экспертную систему с использованием CLIPSРеализовав интерфейс Router я смогу перенаправить ввод и вывод CLIPS в Java

116
super ключевое слово и разбор

super ключевое слово и разбор

Из всего кода совсем не понимаю как отрабатывает ключевое слово superВо всех моментах этого кода, помогите разобраться пожалуйста!

134
Отрисовка градиентов

Отрисовка градиентов

Возможно ли реализовать градиент на элементе подобного вида

135
Как на css написать горбик?

Как на css написать горбик?

Есть блок, хочу сделать плавный переход на белый цвет1 вариант - svg - не шарю, и не хочу кешировать, с png такая же история

150