2011-08-13 9 views
1

プロジェクトに問題があります。 Netbeansで動作しているときは、ユーザーとのやりとりでうまくいくようです。しかし、私がmvn testを使って走っても、それはしません。コマンドラインメニューが表示されますが、選択を求めるプロンプトは表示されません。プロジェクトを強制終了すると、「No Line Found」というエラーが表示されます。java.io.scanner(System.in)

すべてのアイデア?私は困惑している。

動作していないラインは基本的に次のとおりです。

System.out.print("1) Print String\n" 
+ "0) Exit\n" 
+ "Enter Selection: "); 
String line = (new java.util.Scanner(System.in)).nextLine(); 

私はこれと同様に、出力を参照してください。

1) Print String 
0) Exit 

をしかし、私は見ていない「の選択を入力してください。」と、それはdoesnの文字列入力を促します。私は終了し、 "行が見つかりませんでした"が表示されますが、実行を取り消した後、文字列全体が "テスト結果ウィンドウ"に表示されます。

答えて

1

ユニットテストがユーザーの操作のために一時停止するのは異常です。私はそれが奇妙に作用するならば、私は驚かないだろう。私はテストライブラリが本当にこのようなことを予期していないことを期待しています。

+0

あなたはそれが異常だと言っていますが、ユーザーがこれとやりとりできるようにする方法はありますか?それとも良い方法がありますか?私はアプリケーションが割り当てのためにmvnテストの下で実行される必要があるので、割り当てにはユーザインタラクションが必要であるため、少なくとも何らかの形でインタラクションを許可する必要があると想定します。 – Rjs222

+0

1)ユーザインタラクションレイヤを可能な限り薄くします。そうすれば、他のすべてをテストすることが容易になります。 2)発明性を持つ。あなたは、割り当てにはユーザーとのやりとりが必要だと言いますが、テストのためにいくつかの入力をプレハブすることができます。 System.inが入力メカニズムの場合、それは単なるストリームです。任意のストリームを入力に使用できるようにクラスを構築します。次に、テスト中に必要なあらゆる種類のストリームを提供できるため、手動で対話する必要はありません。 –

0

実際には、JUnitテストの実行中にユーザーと対話しないでください。テストは、自動的かつ継続的に動作するように設計する必要があります。基礎となるコードを2つの別々の値でテストしたい場合は、2つのテストを実装し、それぞれの独自のコードで呼び出す必要があります。これは、ユーザーに提供される2つのオプションをカバーします。