JUnit 测试Class 无法识别 Class
JUnit TestClass does not recognize Class
我正在编写我的第一个 junit 测试 class。我的 calculator.java class 在我的 src 目录中,我的测试 class (CalculatorTest.java) 在 test/src 目录中。我的问题是 CalculatorTest class 无法识别计算器 class。有什么想法吗?这是我在 src 目录中的 calculator.java class:
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;
}
}
这是我在 test/src 目录中的 CalculatorTest class:
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();
谢谢
您需要导入 class Calculator
通常应用程序 classes 位于源或 src/main
文件夹下,而测试 classes 位于 src/test
目录中。
因此您必须确保 Calculator
class 已导入您的测试 class 即 CalculatorTest
.
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
文件夹
由于您的 class 位于不同的目录中,
在您的 CalculatorTest
class 中导入 Calculator
class 并重试。
希望对您有所帮助。
归纳为@javaguy 的回答,确保包是相同的。如果你想在没有导入语句的情况下使用 Calculator class,你需要在同一个包中同时拥有 classes、Calculator 和 CalculatorTest。
主要 类 应该在 src/main/java
之下
和
测试 类 应该在 src/test/java
下
如果所有内容都在正确的位置并且仍然无法访问主要 类 那么
右键单击项目 => Maven => 更新项目
希望这样可以解决问题
我正在编写我的第一个 junit 测试 class。我的 calculator.java class 在我的 src 目录中,我的测试 class (CalculatorTest.java) 在 test/src 目录中。我的问题是 CalculatorTest class 无法识别计算器 class。有什么想法吗?这是我在 src 目录中的 calculator.java class:
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;
}
}
这是我在 test/src 目录中的 CalculatorTest class:
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();
谢谢
您需要导入 class Calculator
通常应用程序 classes 位于源或 src/main
文件夹下,而测试 classes 位于 src/test
目录中。
因此您必须确保 Calculator
class 已导入您的测试 class 即 CalculatorTest
.
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
文件夹
由于您的 class 位于不同的目录中,
在您的 CalculatorTest
class 中导入 Calculator
class 并重试。
希望对您有所帮助。
归纳为@javaguy 的回答,确保包是相同的。如果你想在没有导入语句的情况下使用 Calculator class,你需要在同一个包中同时拥有 classes、Calculator 和 CalculatorTest。
主要 类 应该在 src/main/java
之下
和
测试 类 应该在 src/test/java
如果所有内容都在正确的位置并且仍然无法访问主要 类 那么
右键单击项目 => Maven => 更新项目
希望这样可以解决问题