Test не пройден JUnit

Рейтинг: 0Ответов: 1Опубликовано: 25.12.2014

В одном пакете есть 2 класса, один из них тестовый

package main;
public class Amount{
    public int sum(int v1, int v2){
        System.out.println("Adding values " + v1 + " + " + v2);
        return v1 + v2;
    }
}

package main;
import static org.junit.Assert.*;
import org.junit.Test;
public class AmountTest{
    Amount project = new Amount();
    int sum = project.sum(2,5);
    int resSum = 7;
    @Test
    public void testSum(){
        System.out.println("@TestSum(): " + sum + " = " + resSum);
        assertEquals(sum, resSum);
    }
}

Но проверка заканчивается неудачно

junit:
    [junit] Running main.AmountTest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.017 sec
    [junit] Test main.AmountTest FAILED

Почему?

ОБНОВЛЕНИЕ

<path id="classpath" location="lib/*.jar">
        <fileset dir="lib" includes="*.jar" />
</path>
<path id="application" location="build/jar/Project.jar" />

<target name="junit">
        <junit printsummary="yes">
            <classpath>
                <path refid="classpath" />
                <path refid="application" />
            </classpath>
            <batchtest fork="yes">
                <fileset dir="src" includes="**/*Test.java"/>
            </batchtest>
        </junit>
    </target>

Ответы

▲ 2

В Junit (и скорее всего, и в других тестовых фреймворках) есть два стандартных метода:

@Before
public void setUp() throws Exception {
    //Код, выполняемый перед запуском ВСЕХ тестов
}

@After
public void tearDown() throws Exception {
//Код, выполняемый после запуска ВСЕХ тестов 
}

Т.е. ваш блок кода по созданию объекта и инициализации переменных можно перенести в метод setUp.

Но я бы сделал так:

public class AmountTest{

    private Amount project;

    @Before
    public void setUp() throws Exception {
        //Код, общий для всех тестов
        project = new Amount();       
    }

    @Test
    public void testSum(){
        //Локальные данные, которые нужны только в этом тесте
        int sum = project.sum(2,5);
        int resSum = 7;    
        System.out.println("@TestSum(): " + sum + " = " + resSum);
        assertEquals(sum, resSum);
    }
}