2015-10-17 66 views
-1

我曾经只有一个默认包来完成我的课程。现在我正在学习JUnit测试,因此我创建了另一个名为test的包。但是,我无法访问另一个包中名为QuickSort的公共类。无法访问另一个包中的公共类

下面是该项目的结构和代码的出现问题的行 enter image description here

代码:

package test; 

import org.junit.Test; 
import org.junit.Assert; 

public class TestQuickSort { 

    int[] numbers = new int[] { 1, 5, 3, 6, 7, 84, 2, 4, 3 }; 
    int[] expectedNumbers = new int[] { 1, 2, 3, 3, 4, 5, 6, 7, 84 }; 

    @Test 
    public void test() { 
     QuickSort qs = new QuickSort(numbers); 
     Assert.assertEquals(expectedNumbers, qs.sort()); 
    } 
} 
+0

向我们展示'QuickSort'代码(至少是类声明), –

+0

通常情况下,JUnit测试与它正在测试的类具有相同的包,但是测试代码是例如。在'src/test'下,并且'src/main'下的主代码在并行文件夹层次结构中。您只需调整IDE的构建路径即可适应此问题。 –

回答

4

不这样做。 永远不要使用默认包,除非你绝对必须。你想用两个项目;一个包含“生产”代码;另一个包含测试代码;两者使用相同的目录布局:

“真正的代码项目”: 的src /一些/包

“测试项目”: 的src /一些/包

你把你的 “代码来测试” 进第一个项目/目录;和你的测试代码到第二个。然后,您必须确保测试项目的项目设置已设置,以便“查看”其他项目。

1

尝试增加进口为你的类:

import QuickSort; 

如果您将鼠标悬停在Eclipse中以红色下划线的类名上,则Eclipse将显示一个选项,用于自动将导入添加为您。

+0

谢谢,我更新了我的文章,没有导入QuickSort的选项 –

+2

谁提高了这个废话?谁在没有证明他们的情况下提出答案? – BalusC

+0

AFAIK,这是在Java 1.4之前的有效导入语句,但当然不适用于Java> 1.4。 –

1

您无法从未命名包(例如默认包)中导入类。它会导致编译时错误。这就是为什么不建议使用默认包的原因;但是,如果您是使用多个软件包的新手,则可以完全明白为什么会出现此错误。

相关问题