2013-01-09 129 views
0

我有一個Excel文件,用於存儲測試用例名稱/ ID。如何運行基於外部輸入的Junit/TestNG測試?

現在,如果我的測試用例名稱(在Excel中)以'test'開頭,我想執行我的一個Junit/TestNG測試。如果我的測試用例名稱(在Excel中)以'check'開頭,我想執行另一個Junit/TestNG測試。同樣,我想在Excel中執行基於ID的不同測試。

我該如何做到這一點? 有人可以發表一個可以對我有很大幫助的例子。

謝謝, 邁克

+0

我可以從Excel讀取 - 這裏沒有問題。我如何在運行時使用這些數據來選擇正確的測試方法。 – Mike

回答

4

我認爲你想要做的是根據你的Excel表格動態構建測試。 這是你如何運行testng programmatically

你需要做的是從你的excel中讀取數據,創建XmlClass並根據你的方法的測試名稱設置xmlclass的方法。將xmlclass添加到XmlSuite。 所以基本上你是基於你excel中的testcase名字在運行時生成一個動態套件。

+0

我們可以在課堂上做到這一點..有沒有辦法,我們可以在方法級別做到這一點?我的每個測試類都包含多種測試方法.. – Mike

1

你所尋找的是一種叫做反射。在你的xml中,你將擁有你想運行的類和方法名稱。在java中,您將使用反射來獲取類,並遍歷這些方法來確定是否有任何匹配。反思通常不是一種有效的做事方式,但爲了測試它可以做你想做的事。

一個例子是

for(Method method : this.getClass().getMethods()){ 
{ 
    if(method.getName().equals(name)){ 
     method.invoke(); 
    } 
} 

請詳查閱讀http://docs.oracle.com/javase/tutorial/reflect/class/index.html

1

我用testNG做了類似的事情。我的要求是運行用戶從測試用例列表中選擇的測試用例。我使用Jenkins而不是Excel表來讓用戶從列表中選擇測試用例。邏輯也可能適合你。這是它:

而不是找出哪個方法運行,我給所有測試用例一個獨特的測試組名稱。這個組名應該和你在Excel表格中的名稱相同。所需的唯一邏輯是創建testng.xml以使用輸入組名稱運行測試。這可以通過使用testNG對象或使用dom4j或類似的東西創建一個tesNG.xml來完成。

相關問題