1
A
回答
3
分解讀取鍵盤的代碼,使其成爲界面。然後創建兩個實現,一個用於生產,實現「真正的」Java代碼讀取鍵盤;第二個可以從代碼訪問,特別是從您的JUnit測試中訪問。
使用後者,您的測試可以「輸入」任何需要的輸入。
補充:
這是不合法的代碼,我打字它關閉我的頭頂!這也只是一種方法:gpampara的方法可以讓你自己的Streams也可以工作。這取決於您的測試需求。
首先將界面
public interface Keyboard
{
public int getInt() ;
}
那麼 「真實」 的FPGA實現:
public class RealKeyboard
implements Keyboard
{
// I haven't done Java keyboard reading in ages, so this is
// likely not how to do it, but you should get the idea
private BufferedReader __r ;
public RealKeyboard(BufferedReader r)
{
__r = r ;
}
public int getInt()
{
// whatever you need to do with __r
}
}
那麼這裏有一個可能的測試執行:
public class TestKeyboard
implements Keyboard
{
private int __value ;
public TestKeyboard(int value)
{
__value = value ;
}
public int getInt()
{
return __value ;
}
}
當然,這將始終返回相同的價值,這可能不是你想要的。您可以使用setInt()方法執行實現,以便測試類可以在測試期間設置值,或者可以將值列表傳遞給構造函數,然後依次返回每個值。取決於你需要測試的東西。
然後調用代碼僅僅是通過下列操作之一:
你可以使用Spring注入,或者只是在「生產」的代碼是硬編碼。但是在你的測試中,你可以通過你的一個測試實現。
0
編寫你的類來分離實際的鍵盤輸入和鍵盤輸入的處理,然後分別測試它們。
至於鍵盤輸入本身,把NO功能放在閱讀鍵之外 - 這樣它就可以工作,或者它不會......你也可以模擬出給你鑰匙的班級,讓你嘲笑類將「已知」鍵提供給正在測試的類。
0
與其他答案類似,但我認爲您的抽象應基於Stream
。
通過在單元測試中提供ByteArray [輸入|輸出]流(或其他類似的東西),您可以很容易地將鍵盤輸入視爲流。
相關問題
- 1. 在JUnit測試中模擬Java中的鍵輸入
- 2. 角度2單元測試:如何測試鍵盤輸入
- 3. 鍵盤輸入java
- 4. 如何在Java中測試異常Junit
- 5. 如何在Junit中測試集合(Java)
- 6. 如何JUnit測試在Java中的任何輸出
- 7. 如何檢測鍵盤輸入密鑰?
- 8. 如何在java中的鍵盤輸入文件中寫入?
- 9. 如何更改java-ME鍵盤輸入
- 10. Java JUnit測試
- 11. 檢測鍵盤輸入Matlab
- 12. 鍵盤輸入檢測
- 13. 試圖從鍵盤輸入
- 14. Selenium with JUnit - 在測試流程中嵌入測試(Java)
- 15. Java流鍵盤輸入
- 16. Java Slick:鍵盤輸入
- 17. 在鍵盤輸入過程中測試活動標誌
- 18. 如何在android鍵盤中輸入Dot?
- 19. 如何測試junit測試
- 20. Java的JUnit測試
- 21. JUnit測試java eclipse
- 22. JUnit如何黑盒測試沒有輸入和輸出的功能? Java
- 23. Java Applet中的鍵盤輸入
- 24. Android:單元測試中的鍵盤輸入
- 25. 如何在JUnit測試
- 26. 焦點在JpopupMenu上檢測鍵盤輸入(Java)
- 27. 如何使用JUNit測試Java-Spark?
- 28. 鍵盤輸入
- 29. 如何鍵盤輸入在GUI
- 30. 如何在windows鍵盤上輸入«»
你好,感謝您的幫助,我沒有看到這個接口是如何工作的,我想我會有一個方法接口來讀取鍵盤輸入,以及一個這樣的實現: n = Keyboard .readInt(); 我的問題是:兩種實現之間的特殊變化是什麼? OBS:對不起英語不好,我來自巴西:D – elf 2010-08-24 13:16:36
啊......訣竅是使用依賴注入...我會編輯我的答案,看看是否有幫助。 – 2010-08-24 15:54:34
這個「啊」看起來像尤里卡:D我去讀更冷靜 – elf 2010-08-25 13:07:35