2012-03-04 8 views
0

私のプロジェクトでは、heiracrchyの並べ替えに苦労しています。私はすべてのクラスをパッケージにまとめましたが(間違っています)、パッケージを別のレベルに置くことに反対するパッケージを入れ子にする必要があると思いますか?JUnitのテストケース - クラスが表示されない

私のプロジェクトでクラスのテストクラスを作成しようとすると、すべてのことについてリフレクションを使わずに関連するメソッドを見ることができません。

私が現時点で持っている階層構造が enter image description here

は何私はすべてのためにリフレクションを使用せずにテストすることができるように変更すると巣正しく私のパッケージのことができるようにする必要がありますか?

おかげ

+0

「関連するメソッドを参照してください」と「リフレクションを使用する」とはどういう意味ですか?おそらく、メソッドの可視性がデフォルトのパッケージレベルであることを意味しますか? 'public void testMyStuff()' –

+0

私はテストクラスでクラスのオブジェクトを作成するとき、決して利用可能なメソッドを持っていないようですか? – Biscuit128

+1

あなたが実際に行っていることを見ることができるように、クラスとそのテストの最小の例を私たちに示してもらえますか? – DNA

答えて

2

メソッドのデフォルトのアクセスは「パッケージの可視性」です。この上でIBMからこの記事を参照してください。

http://www.ibm.com/developerworks/library/ws-tip-mem-visibility.html

がパッケージ外のクラスへのあなたの方法を見えるようにするには、それらを公開する:

public void myMethod() {...} 
+0

私はこれを認識します。それを公開に変更しても何も変わらないだけです。コード補完のデフォルト提案はありません。 – Biscuit128

+0

コンパイラはコード補完なしでそれらにアクセスできますか?たぶんあなたはプロジェクト全体をきれいにする必要があります(メニュープロジェクト - >クリーン...) –

+0

ああ、あなたが使っている内部クラスもパブリックにする必要があります!これらのことすべてがうまくいかない場合は、正確な状況(特定のクラスを使って/使用する、パッケージの場所など)についての質問にもっと書くべきだと思います。 –

3

を持つようにテストファイルを配置あなたのsrcファイルと同じパッケージ構造。そうすれば、co.uk.mine.SomeClass内のどのメソッドも、非公開メソッドにアクセスできる対応するco.uk.mine.SomeClassTestを持つことができます。プライベートメソッドはリフレクションによってアクセスできます。テストコードを分離したままにするために、2つのファイラー構造を設定する必要があります。

../src/co/uk/mine/SomeClass.java 
../test/co/uk/mine/SomeClassTest.java 
+0

はい。これはユニットテストクラスを構成する従来の方法です。テストクラスはテスト対象のクラスと同じパッケージに入っているため、パッケージアクセスメソッドは表示できますが、別のソースフォルダにあるため、テストコードとメインコードが分かれています。あなたに違う方法を教えてくれる人がいますが、無視するのは安全です。 –

+0

Javaの世界の標準は「Mavenレイアウト」です。プロジェクトのルートの内側には 'src'というディレクトリがあり、その内部には' main'と 'test'があります。実際にはソースルートである 'java'デ​​ィレクトリです。この規格に準拠する特別な理由はありませんが、あなたは野生の中でそれを見つけ出すかもしれません。 –

+0

私の好みであるmavenレイアウトに同意しますが、私たちは多くの人たち、あるいは違うかもしれません。私は、クラスパス上に2つのディレクトリ構造を使用して、ミラー化されたパッケージを可能にするが、別々のフォルダを使用することが重要だと考えています。繰り返しますが、私はMavenが好きで、あなたがそれを一度も使ったことがない場合は一見を奨励します。 – Romski

関連する問題