【发布时间】:2016-12-30 13:02:53
【问题描述】:
我正在开发一套自动化的 Selenium 测试。我有一些代码可以处理检查我们网站的搜索过滤器(检查它们的有效性、选择的内容等)。这段代码的运行速度比我预期的要慢得多。我正在使用页面对象模式开发套件,在开发过程中,我会从主要方法中调试各种位,然后在页面对象正常运行后使用 JUnit 实现测试方法。
我注意到在 Main 和 JUnit 中构造对象的执行时间之间存在显着的时间差异。在 Main 中,对象构造大约需要 15 秒。然而,当我通过 JUnit 运行它时,对象构造大约需要 16 分钟。这显然是一个足够大的差异,我对此感到担忧,并想知道如何让 JUnit 执行时间更接近我在通过 main 运行时观察到的时间。我会很感激任何想法,或者更好地理解造成延迟的原因。谢谢!
配置: 爪哇 8, 硒 2.53.0, JUnit 4.12, 菲狐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 执行,但我很确定它是在发生时差的两个地方(过滤器构造函数)上运行的完全相同的代码位。
【问题讨论】:
-
这听起来确实很奇怪,但是如果没有访问您的源代码和系统,就很难说什么。我会首先检查您的代码是否真的相同;并做相同的事情。好吧,显然不是,但我会先看看单元测试到底在做什么。
-
@GhostCat - 我已编辑问题以提供更多详细信息。从本质上讲,我确信它是相同的代码,因为它是在不同时间内被调用和执行的对象的构造函数。