我使用NetBeans 6.9.1与Java SE。
我正在做一个名为自动更正的项目,代码在2个文件夹中,src和测试。为了访问私有字段和方法,我试图将我的测试文件放在与源文件相同的包中:
edu.brown.cs32.dtadams.<package>
的例子:
package edu.brown.cs32.dtadams.trie;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import java.util.List;
/* A generic class for testing methods in the "edu.brown.cs32.dtadams.trie" package
*
* @author Dominic Adams
* @version 1.0 2/13/13
*/
public class TrieTest {
...[TESTS]...
}
我被告知,即使TrieTest是在一个不同的根文件夹比它所在的包的其余部分,NetBeans应该识别它是在同一个。但是,TrieTest似乎不能从它自己的包中识别任何文件。当我添加
"import edu.brown.cs32.dtadams.SQTrie"
的导入,我得到了这两个错误:
- cannot find symbol: ...[info]...
- Import From The Same Package
因此,TrieTest识别出它位于与SQTrie同名的包中,但NetBeans并不将这两个包等同起来。
谁知道是什么原因导致了这个问题?或者关于NetBeans如何跨多个文件夹处理包的更多信息?要限制对同一个包的方法访问,请使用包私有访问修饰符这意味着在方法前面不放任何内容(没有private/public/protected)。Private要强大得多,并且限制了对类本身的使用。此访问修饰符也经常用于单元测试,以避免过度暴露被测试的方法。