0

我有两个应该进行黑盒测试的 .class 文件。这些都在一个包中one.two.three。我的测试也在同一个包中。在同一个包中有第三个 .class 文件,其目的是为Orders我应该测试的类保存一个枚举变量。在eclipse中,我可以Orders通过直接导入枚举来让junit测试工作,例如

import one.two.three.Orders.ShippingMethod;

如果我尝试使用 Ant 或通过命令行执行此操作,我会收到错误“包 one.two.three.Orders 不存在”。如果我将导入语句更改为

import one.two.three.*;

Ant、Eclipse 和终端找不到我拥有的任何类。我需要用 Ant 编译和运行测试用例。课程在bin/one/two/three任何帮助将不胜感激,谢谢。

4

2 回答 2

1

Import Orders,因为它是类,并假设它是该类ShippingMethod中的枚举,引用其类型的正确方法是Orders.ShippingMethod.

尝试导入类的内部类型有时在 Eclipse 中会很奇怪。这可能是由于 Eclipse 没有使用javac打包在你的 jdk 中的编译器,而 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编译器可能是正确的。

于 2013-03-12T21:40:14.083 回答
0

您需要设置类路径。

我不完全了解 Eclipse(我使用 NetBeans),但我点击了Libraries -> add JAR/Folder.

对于命令行,您需要指定类路径

java -cp path/to/my/files (...)

于 2013-03-12T21:38:28.980 回答