2016-11-19 2 views
0

Я пишу свой первый тестовый класс junit. Мой класс calculator.java находится в моей директории src, а мой тестовый класс (CalculatorTest.java) находится в каталоге test/src. Моя проблема в том, что класс CalculatorTest не распознает класс калькулятора. Есть предположения? Вот это мой calculator.java класс в каталоге Src:JUnit TestClass не распознает класс

package edu.umb.cs.cs680.unittest; 

public class Calculator { 
public float multiply(float x, float y){ 
    return x*y; 
} 

public float divide(float x, float y){ 
    if(y==0){ 
     throw new IllegalArgumentException("division by zero"); 
    } 
    return x/y; 
} 
} 

И это мой CalculatorTest класс в каталоге тест/Src:

package edu.umb.cs.cs680.unittest; 
import static org.junit.Assert.*; 
import static org.hamcrest.CoreMatchers.*; 
import org.junit.Test; 
import edu.umb.cs.cs680.unittest.Calculator; 

public class CalculatorTest{ 
@Test 
public void multiply3By4(){ 
    Calculator cut = new Calculator(); 
    float expected = 12; 
    float actual = cut.multiply(3,4); 
    assertThat(actual, is(expected)); 
} 

@Test 
public void divide3By2(){ 
    Calculator cut = new Calculator(); 
    float expected = 1.5f; 
    float actual = cut.divide(3,2); 
    assertThat(actual, is(expected)); 
} 

@Test(expected=IllegalArgumentException.class) 
    public void divide5By0(){ 
    Calculator cut = new Calculator(); 
    cut.divide(5,0); 
} 
} 

Это мой build.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project default="runjunit" name="ant project"> 
<property environment="env"></property> 
<property name="ECLIPSE_HOME" value="${env.ECLIPSE_HOME}"></property> 
<property name="junit.output.dir" value="test/bin/edu/umb/cs/cs680/unittest"></property> 
<property name="bin.dir" value="bin/edu/umb/cs/cs680/unittest"></property> 

<path id="JUnit 4.libraryclasspath"> 
    <pathelement location="lib/junit.jar"/> 
    <pathelement location="lib/org.hamcrest.core_1.3.0.v201303031735.jar"/>  
</path> 
<path id="HW4.classpath">  
    <path refid="JUnit 4.libraryclasspath"/> 
</path> 

<target name="compile"> 
    <mkdir dir="${bin.dir}"/> 
    <mkdir dir="${junit.output.dir}"/> 
    <javac includeantruntime="false" srcdir="./src" destdir="./bin" >   
     <classpath refid="HW4.classpath"></classpath> 
    </javac> 
    <javac includeantruntime="false" srcdir="./test/src" destdir="./test/bin" >   
     <classpath refid="HW4.classpath"></classpath> 
    </javac> 
</target> 
<target name="clean"> 
    <delete dir="./bin"/> 
    <delete dir="./test/bin"/> 
</target> 
<target name="runjunit" depends="compile"> 
    <junit printsummary="yes" haltonfailure="yes"> 
     <path refid="JUnit 4.libraryclasspath" /> 
     <!--<test name="test.src.edu.umb.cs.cs680.unittest.CalculatorTest" />--> 
     <test name="x.CalculatorTest" /> 

     <classpath refid="HW4.classpath"></classpath> 
    </junit> 
</target> 
</project> 

Это ошибка:

cannot find symbol Calculator cut = new Calculator(); 

Благодаря

+0

Возможно, у вашего пути есть недостаток. –

+0

Являются ли ваши оба класса в разных пакетах? –

ответ

0

Вам нужно будет импортировать класс Calculator

Обычно классы приложений находятся в источнике или src/main папку, в то время как тестовые классы находятся в src/test каталоге.

Таким образом, вам необходимо убедиться, что класс Calculator импортирован в вашем тестовом классе, то есть CalculatorTest.

+0

Я хочу, чтобы мои тестовые классы в отдельной папке (тестовой папке) не были в папке src/test. –

1

My calculator.java class is in my src direcotry and my test class (CalculatorTest.java) is in test/src directory. My problem is that CalculatorTest class does not recognize the calculator class. Any thoughts?

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

Calculator.java ->src/main папка

CalculatorTest.java ->src/test папки

+0

Я разместил файл build.xml .. Я подозреваю, что проблема в этом файле. Не могли бы вы взглянуть на него? спасибо –

0

Поскольку ваши классы в разных каталогах,

Импортировать Calculator класс в вашем классе CalculatorTest и попробуйте еще раз.

Надеюсь, это поможет.

+0

Спасибо ... Я импортировал класс калькулятора, и также я использую такие же имена пакетов .. но все равно не работает. –

0

Подведенный к @javaguy ответ, убедитесь, что пакеты одинаковы. Если вы хотите использовать класс Calculator без предложения для импорта, вам необходимо иметь оба класса, Calculator и CalculatorTest в том же пакете.

+0

Я отредактировал свой ответ, используя ваше предложение. Но до сих пор не повезло –

Смежные вопросы