2011-08-13 68 views
1

我遇到了我的項目問題。在Netbeans中運行時,用戶交互似乎很好。但是,當我運行使用mvn測試它不。我看到了命令行菜單,但我沒有提示做出選擇。當我強制終止該項目時,出現「找不到線路」錯誤。Maven an 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提示輸入字符串。我終止並得到「找不到線」,雖然我取消執行後,我看到整個字符串int他「測試結果窗口」。

回答

1

單元測試暫停用戶交互是不正常的。如果它奇怪地行爲,我不會感到驚訝。我希望測試庫不會真正預測這種事情。

+0

雖然你說這是不正常的,有沒有辦法讓用戶與此交互?還是有更好的做法?我會假設,因爲應用程序需要在mvn測試中運行,並且該分配需要用戶交互,它至少需要某種形式的交互。 – Rjs222

+0

1)使用戶交互層儘可能薄。這可以很容易地測試其他所有內容。 2)具有創造性。您說這個任務需要用戶交互,但您可以預先測試一些輸入。如果System.in是您的輸入機制,那只是一個流。建立你的類可以使用任何任意的流來輸入。然後,您可以在測試期間提供您想要的任何類型的流,從而消除手動交互的需要。 –

0

實際上,在執行JUnit測試時,不應該與用戶交互。測試應設計爲自動連續運行。如果你想用兩個單獨的值測試底層代碼,應該實現兩個測試,並用它們自己的值調用每個底層代碼。這應該涵蓋提供給用戶的兩個選項。