2017-06-28 94 views
0

我正在開發一個基於Appium-cucumber-Java的自動化項目,該項目將隨着時間的推移而不斷髮展。在不同的java文件中構建Cucumber JVM步驟定義

目前,我有步驟定義給定,當,然後在iOS的一個文件中&另一個文件的Android。 這兩個文件都從一個普通的basetest類擴展而來。 我在這兩個文件中都使用new關鍵字初始化所需的頁面對象。

現在,我想模塊化它一點點&創建一個CommonStepDefs文件。但我開始得到空指針異常。

能否請您用類似上述的任何方法建議或樣品例如提前建立這個

感謝。

public class AndroidTestsStepDefs_usingFactory extends BaseTestClass { 

AndroidChooseCountryPage androidChooseCountryPage; 
AndroidCountrySelectionPage androidCountrySelectionPage; 
OrderPrints orderPrints; 
AndroidHomePage androidHomePage; 
TourPage tourPage; 

public AndroidTestsStepDefs_usingFactory() throws IOException, AWTException { 
} 


@Given("^the app has been installed$") 
public void the_app_has_been_installed() throws Throwable { 
    initializeDriver("android"); 
    super.setCoreAppType("Android"); 
} 
+0

請提供更多的細節,這究竟行拋出異常? – fg78nc

回答

1

您有興趣在步驟定義文件之間共享狀態。

Java中慣用的共享狀態是創建一個通用對象,該對象在使用依賴注入的所有步驟之間共享。

如果您的項目使用依賴注入框架,請使用相同的步驟定義類之間的共享狀態。 Cucumber-JVM支持許多不同的依賴注入框架。你的支持可能是你的。

如果你不使用依賴注入,我建議使用PicoContainer。

我寫了兩篇關於這個話題的博文。使用共享狀態

+0

非常感謝。 – user2451016

+0

非常感謝。兩個更多的查詢 - 1)Spring ApplicationContext可以用於臨時存儲方便的東西,還是我們需要創建某種數據模型。 2)我正在使用Cucumber + Appium + Java,並且在這個背景下,對於是否去TestNG ITestContext或Spring的ApplicationContext來存儲上面提到的狀態有點困惑。請在此提供一些想法。謝謝 – user2451016

+1

我可能會將我需要的任何東西存儲在我自己的世界對象中。一個世界對象是一個相當簡單的結構,將給予很大的自由,我不需要學習另一個框架。 –

相關問題