2010-07-22 63 views
0

我最近從NetBeans 6.7.1升級到NetBeans 6.9,舊的JUnit測試在導入語句周圍的NetBeans編輯器中顯示「無法找到符號」錯誤。NetBeans 6.9和JUnit 4.8.2軟件包可見性問題

在這些單元測試中,所有東西都正確構建,我仍然可以運行/調試單元測試而不會出現任何問題。但是,編輯器中的自動完成對於無法找到的類完全不起作用。這使得創建新的JUnit測試變得很困難。

我可以從套件中的其他模塊正確導入類。 Java API類也導入沒有問題。這看起來像一個依賴性問題,但我不知道如何解決它。

這裏的假想NetBeans項目結構我上運行:

MyCodeSuite 
- MyNetBeansModule1 
- - Source Packages 
- - - com.company.module1.foo 
- - - - DoSomething1 
- - - - DoSomethingElse1 
- - - - ClassInQuestion 
- - Unit Test Packages 
- - - com.company.module1.foo 
- - - - ClassInQuestionTest 
- MyNetBeansModule2 
- - Source Packages 
- - - com.company.module2.foo 
- - - - DoSomething2 
- - - - DoSomethingElse2 

ClassInQuestionTest.java:

package com.company.module1.foo; 

import com.company.module1.foo.DoSomething1; // this is where the editor starts showing errors; these errors are propagated throughout the code anywhere "DoSomething1" shows up 
import com.company.module2.foo.DoSomething2; // the editor doesn't complain for this one 

// These imports all work correctly 
import java.util.List; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import static org.junit.Assert.*; 

我重複這個新的單元測試,以及現有的單元測試。無論我從com.company.module1.foo包中導入什麼課程。編輯器顯示該包內以及同一模塊內的任何類的錯誤。

另外,請注意,我正在使用NetBeans 6.9中的「創建JUnit測試」上下文菜單項來開始新的單元測試。這也是如何創建原始單元測試類(在NB 6.7.1下)。

+0

是的,我也遇到過這個問題。從來沒有能夠找出它,因爲它會看似隨機折磨項目。 – 2010-07-23 18:19:56

回答

0

我的一位同事弄明白了。

您的單元測試需要依賴於它正在測試的包。不幸的是,您無法通過NetBeans GUI執行此操作。但是你可以直接通過直接編輯project.xml文件來實現。這裏是一個例子,加粗部分是我添加的。

... 單元 org.netbeans.libs.junit4 com.mycompany.mypackage

+0

感嘆,我無法正確地設置這種格式。您需要添加一個指向您要測試的包的部分。 – 2010-07-26 16:52:04

+0

就是這樣。太棒了。注意事項:您不能在下包含標記,並且必須包含。至少我的特殊遷移和模塊就是這種情況。 – stever 2010-07-26 17:08:30

0

這讓我發瘋!

值得注意的是,沒有實際的錯誤,測試運行良好。這只是編輯器搞砸了。

0

因此,您是從單元測試所在的包中導入的?有一個在

工具的設置 - >選項 - >編輯 - >提示 - >導入 - >導入來自同一個包

這可能是相關的。您還可以在提示 - >依賴掃描中查看選項。

+0

你好Jorn,我找到了你建議的選項,並嘗試它們無濟於事。任何其他想法? – stever 2010-07-26 16:31:48

0

@喬治 - 波利,同意沒有實際的錯誤,編輯器只是顯示錯誤。

我在NB 7.0.1自由格式Java項目中使用了以下模式。XML:

  • www.netbeans.org/ns/project/1.xsd
  • www.netbeans.org/ns/freeform-project/1.xsd
  • www.netbeans.org/ns/自由項目/ 2.xsd
  • www.netbeans.org/ns/freeform-project-java/3.xsd

沒有直接支持這些的<test-dependency>

我通過NB GUI修復了@ stever的原始問題:項目屬性==> Java源類路徑==> Java平臺,對於所有「源包文件夾」,我將「Java Platform」設置爲有效的「 JDK 1.6「(儘管我使用的是32位JDK 7u1)。

這消除了我的JUnit「無法找到符號」錯誤,但稍微混淆了我的{project}/nbproject目錄。除了修改 「的project.xml」,它創造了以下4個新的文件:

  • genfiles.properties
  • jdk.xml
  • nbjdk.properties
  • nbjdk.xml