2012-11-01 101 views
3

如何使用TestNG自動化功能測試,跨越多個Java進程?使用TestNG自動化功能測試?

我對嘗試使用TestNG而不是JUnit感興趣,因爲它聲稱是爲單元測試而設計的,但我一直無法找到具體的例子來說明如何做到這一點。

我有一個Java程序(p1),它偵聽來自某些特殊硬件的事件。它解析這些命令並將它們發送到另一個基於這些命令執行操作的Java進程(p2)。

測試整個鏈條,我設法想出下面特設的解決方案:

  1. 我有「假」的硬件列表的文本文件命令
  2. 我添加了一個模擬到p1,它讀取文本文件而不是偵聽事件
  3. 我執行p1(p2已在測試環境中運行)
  4. 我比較p2的日誌輸出以驗證它是否與列表中的命令匹配。

我做到這一點使用一個簡單的shell腳本 - 這哪是使用TestNG自動化?

回答

2

是的,您可以使用testNG輕鬆自動化多個腳本。

TestNG支持數據驅動測試;即您提供了一個方法中的所有數據,該方法被傳遞給測試方法來執行檢查(斷言)。而且所有這些都是通過Annotation來完成的,所以你不需要爲此編寫任何代碼。

我會建議你使用像Eclipse一樣的IDE(如果你還沒有使用)並且有插件可用於eclipse。通過Eclipse;編寫測試用例以及自動化變得非常簡單。將建議你只是谷歌;你會發現足夠的例子。

另外Junit 4同樣好。

2

你擁有的是一個跨越多個進程的執行環境。這意味着您的測試環境必須能夠根據需要自動創建這些流程。基本流程是標準的:設置,多個測試,拆卸。在安裝和拆卸程序,不過,需要啓動和停止進程,初始化輸入,提供具體的測試環境參數等

從你所描述的東西,它似乎並不彷彿它事項的程序p1在Java中。您可以使用java.lang.Runtime來執行p1。您已經預見到需要模擬硬件行爲,所以我假設您已經知道如何在適當的集成測試模式下運行p1。如果由於某種原因,您需要更多Runtime爲您提供,請查看JVMTI,調試和儀器的界面。

根據您希望或需要測試的方式,您可能在爲每個測試用例啓動一個進程時遇到性能問題。在這種情況下,你需要一個進程來進行一組測試。在這種情況下,您正在重複使用資產,可能會失敗,畢竟這是一個測試環境。所以你想在每次測試開始時檢查該進程是否正在運行。確保的一種方法是將檢查放入工廠方法中,該方法將主要被測對象提供給測試用例。java.lang.Process類不會直接允許這種情況發生,但它確實爲過程提供了標準輸入/輸出。如果可以的話,在該通道上實現簡單的「ping」接口就足夠了。其他類型的共享資源也可以工作。