2015-10-17 67 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

您無法從未命名包(例如默認包)中導入類。它會導致編譯時錯誤。這就是爲什麼不建議使用默認包的原因;但是,如果您是使用多個軟件包的新手,則可以完全明白爲什麼會出現此錯誤。

相關問題