2016-08-23 52 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投入比我预期的要多。

相关问题