Попробую Junit в первый раз и потерпел неудачу - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь использовать Junit впервые, но у меня неожиданный сбой.

Вот сообщение об ошибке:
org.opentest4j.AssertionFailedError: expected: <2> but was: <19>.

Было бы замечательно, если бы кто-нибудь смог помочь мне понять, где моя ошибка. Я трачу больше 30 минут, пытаясь понять причину этого, и я не могу. Я думаю, мне нужно где-то внести небольшие изменения.

public class Fraction {
    private int numerator;
    private int denominator;

    public int getNumerator() {
        return numerator;
    }
    public int getDenomonator() {
        return denominator;
    }

    public Fraction(int n, int d) {
        numerator = n;
        denominator = d;

    }
    /**
     * This method is adding other fraction
     * to our current(this) fraction
     * @param otherFraction
     */
    public void add(Fraction otherFraction) {
        int a = numerator;
        int b = denominator;
        int c = otherFraction.getNumerator();
        int d = otherFraction.getDenomonator();
        numerator = a * d + b * c;
        denominator = b * d;

        int min = denominator;

        if (numerator < denominator) {
            min = numerator;                
        }

        int commonDiv = 1;

        for (int i = 1; i <= min; i++) {
            if ((numerator % i == 0) && (denominator % 1 == 0)) {
                commonDiv = i;
            }
        }

        numerator = numerator / commonDiv;
        denominator = denominator / commonDiv;

        if (numerator == 0) denominator = 1;
    }

}

Тест:

class FreactionTest {

    @Test
    void test() {
        Fraction f1 = new Fraction(3,4);
        Fraction f2 = new Fraction(5,6);
        f1.add(f2);
        assertEquals(f1.getNumerator(),19);
        assertEquals(f1.getDenomonator(),12);
    }

    @Test
    void testAddNegative() {
        Fraction f1 = new Fraction(3,4);
        Fraction f2 = new Fraction(-3,4);
        f1.add(f2);
        assertEquals(f1.getNumerator(),0);
        assertEquals(f1.getDenomonator(),1);
    }
}

Я ожидал, что код будет успешно выполнен.

1 Ответ

1 голос
/ 03 июля 2019

Похоже, у вас ожидаемый / реальный обратный вызов в assertEquals().Согласно документам здесь , первый аргумент является ожидаемым значением, а второй аргумент является фактическим значением.Поэтому вам нужно поменять аргументы, так как сейчас вы жестко кодируете результат actual как 19. Вызов, который вы пытаетесь проверить, должен быть вторым аргументом, и значение, которое вы ожидаете получить, должно бытьпервый аргумент.Вы делаете это и во всех других assertEquals() звонках, поэтому обязательно измените их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...