我有两个.class文件,我应该进行黑盒测试。它们位于包one.two.three
中。我的测试也在同一个包中。在同一个包中有第三个.class文件,其目的是为我应该测试的Orders
类保存一个枚举变量。在eclipse中,我可以通过直接导入枚举来使Orders
的junit测试工作。
import one.two.three.Orders.ShippingMethod;
如果我尝试使用Ant或通过命令行执行此操作,我会收到错误“package one.two.three.Orders不存在”。如果我将import语句更改为
import one.two.three.*;
Ant,Eclipse和终端找不到我的任何类。我需要使用Ant编译和运行测试用例。课程在bin/one/two/three
任何帮助都将非常感谢,谢谢。
答案 0 :(得分:1)
导入Orders
,因为它是类,并假设ShippingMethod
是该类中的枚举,引用其类型的正确方法是Orders.ShippingMethod
。
尝试导入类的内部类型有时在Eclipse中很奇怪。这可能是由于Eclipse没有使用jdk中打包的javac
编译器,而Ant确实如此(因为Ant不提供嵌入式编译器)。
import one.two.three.Orders;
public class Whatever {
private Orders.ShippingMethod shipMethod;
}
这应该适用于所有事情,因为这是正确的方法。
import one.two.three.Orders.ShippingMethod;
由于没有,很容易混淆大多数编译器
one/two/three/Orders/ShippingMethod.class
文件,这意味着类加载器不会在运行时找到它。
我敢打赌这是Eclipse嵌入式编译器中的一个错误,因为我已经看过很多。从好的方面来说,Eclipse嵌入式编译器的存在是为了在代码编辑和Eclipse之间提供更快,更紧密的集成。在黑暗的一面,这意味着Eclipse编译器和javac
编译器有时会有所不同。如果有疑问,javac
编译器可能是正确的。
答案 1 :(得分:0)
您需要设置类路径。
我完全不知道Eclipse(我使用NetBeans),但是我点击了Libraries -> add JAR/Folder
。
对于命令行,您需要指定类路径
java -cp path/to/my/files (...)