2011-07-06 10 views
1

私たちが始めてから、私はグーグルで質問をしてきました。 1つ(キーワードは関連性の低い投稿やサイトを結果として得ているので、扱いにくいです)。JUnitでメインと同じクラスのテストメソッド

ここで私のメインメソッドと他の多くの関数を含むJavaクラスがあります。私はJUnitを使ってこれらの関数をテストしたいが、その中にmainを持つクラスをインスタンス化することはできない。単に関数を呼び出そうとすると、両方のファイルが同じパッケージに入っていても関数が名前空間の外にあるというエラーが出る、ファイルをインポートしようとしてエラーが発生します。

JUnitを使用してこれらの機能をテストする方法はありますか?

P.S.はい、私はあなたが新しいクラスにそれらを入れることができることを知っていますが、テストのためだけに新しいクラスを作成したり、ユーザー入力を解析するための2つの関数を入れるのは難しいとは思っていません。メイン関数自体をテストします(テストのためだけにメインメソッドを書くのは珍しいことではありません)。


これは何が起こったかです。私はJavaを頻繁に使用しないので、クラス内でプライベートデータメンバーを作成することになりましたが、C++プログラムでグローバルと同じように扱いました。結果として、私はメインで初期化し、コンストラクタを作成することを考えず、クラスをインスタンス化する際の問題を考えました。それがうまくいかないとき、私は試しました。フォームのプライベートデータメンバを参照して以来、クラスをインスタンス化せずにエラーが発生します。コンストラクタのことに気づいたみんなに感謝します。

+1

mainメソッドを持つクラスをインスタンス化できないのはなぜですか? –

+0

JUnitを使ってこれらの関数をテストしたいのですが、mainを持つクラスをインスタンス化することはできません。 – Kal

+1

ここにコードを投稿してください – emeraldjava

答えて

5

絶対にmainメソッドを含むクラスのインスタンスを、アクセス可能なコンストラクタがある限り作成できます。

同様に、で、MyClassName.myMethodNameを使用して直接静的メソッドを呼び出します。クラスのmainメソッドを持つ

は、Java言語自体の点ではそれに絶対違いはありません - あなたは、単に他のクラス、あなたと同じようにそれをテストすることができます。

0

非常に奇妙です。私はちょうどmainSomeClassを書きました。それはSomeClassTestクラスで完全にテスト可能です。

0

ちょっと考えて、あなたはコンストラクタをmainメソッドでプライベートクラスとして宣言しましたか?コードスニペットと正確なエラーメッセージを投稿することができれば、多くの役に立ちます。

関連する問題