2016-08-23 51 views
1

我正在開發一套自動Selenium測試。我有一段代碼處理檢查我們網站的搜索過濾器(檢查它們的有效性,選擇什麼等)。這段代碼的運行速度比我預期的要慢很多。我正在開發使用頁面對象模式的套件,並且在開發過程中,我將調試主要方法中的各種位,然後在頁面對象正常運行後使用JUnit實現測試方法。不確定爲什麼Selenium方法在Main中快速運行但在JUnit中運行速度很慢

我注意到在Main和JUnit中構造對象的執行時間之間存在顯着的時間差異。在Main中,對象構造大約需要15秒。但是,當我通過JUnit運行它時,對象構建需要大約16分鐘。這顯然是足夠大的差別,我很關心它,並想知道如何讓JUnit的執行時間更接近我在通過main運行時所觀察到的。我會很感激任何想法,或者更好地理解延遲的原因。謝謝!

配置: 爪哇8, 硒2.53.0, JUnit的4.12, Fiefox 48

下面是代碼所討論的行:

// Run in main 

// getFilters() returns new Filters(webDriver); 
Filters filters = resultsPage.getFilters(); 

// Run with JUnit (through IntelliJ) 
filters = resultsPage.getFilters(); 

本質上,唯一的差別是1)測試類中的過濾器是靜態的,並且在我的@BeforeClass方法中設置,並且2)它們通過IntelliJ運行通過JUnit,而不是由IntelliJ執行,但我確信它是運行的代碼的完全相同位在兩個頁面上鞋帶(濾鏡構造函數)時間差正在發生。

+0

這聽起來很不可思議,但它很難說沒有訪問你的源代碼和系統的任何東西。我會首先檢查你的代碼是否真的**相同;並做**相同的事情。好吧,顯然不是,但我會先看看單元測試正在做什麼。 – GhostCat

+0

@GhostCat - 我編輯了這個問題以提供更多細節。從本質上講,我確定它的代碼與被調用並在不同時間執行的對象的構造函數是相同的。 – Tyler

回答

0

那麼,事實證明,這是我的一部分。我在測試類中錯誤地配置了我的WebDriver,它將wait投入比我預期的要多。

相關問題