【问题标题】:Is it possible to access java beans in selenium tests?是否可以在 selenium 测试中访问 java bean?
【发布时间】:2011-09-15 07:49:36
【问题描述】:

我们目前正在使用 Richfaces 3.0、Seam 2.2 和 JBOSS 6.0 开发一个贸易项目。我们正在使用 Selenium 进行 GUI 测试。我只想知道是否有可能在硒测试中访问 bean。

【问题讨论】:

    标签: java testing selenium javabeans jsf-1.2


    【解决方案1】:

    不,Selenium 和 Seam bean 是完全不同的抽象级别。 Seam bean 在 JBoss 服务器内运行,而 Selenium 在 Web 浏览器上运行。

    如果你想以某种方式从内部控制应用程序,你必须为这些 bean 提供一些接口,这些接口可以通过 Selenium 测试访问。例如,如果使用 Java 编写,您可能会将某些操作公开为 Web 服务或 JMX bean,并从 Selenium 测试套件中访问它们。

    但是请注意,这不是最佳实践 - Selenium 测试只能在用户界面(端到端)级别上工作。尝试仅通过用户界面而不是手动访问应用程序内部来设置您的应用程序。

    更新:如果您有一些通用设置(如用​​户、产品等),请将它们作为通用部署基础架构的一部分插入到您的数据库中。然后,您可以对创建/接受用户、添加产品等进行单一测试,然后简单地重用数据库中已经存在的普通用户。

    【讨论】:

    • OP 不是在问 Spring bean,我认为他在谈论 POJO。
    • Ashkan Aryan 的前提仍然是正确的。 Selenium 用于浏览器 UI 测试,不应直接与服务器(及其 bean)交互。
    • @James DW 是的,这是正确的,我在回答中也指出了相同的内容(见下文),只是指出 Spring 不在其中。
    • 我的错误,谢谢。我接受了 James DW 编辑更改为 Seam beans。但总的来说,答案仍然有效。
    • 我只是想知道。我知道这不是一个好习惯。但我们认为也许它让我们有机会跳过一些步骤,因为我对之前的答案发表了评论。
    【解决方案2】:

    技术上没有什么可以阻止您允许 selenium 对您的 bean 可见并直接调用它们的方法。但是,这不是一个好的设计实践。 Selenium 用于测试应用程序的行为(主要通过 GUI),不应该关心 bean 级别。也许如果你给我们一个用例说明你为什么需要这样做,这可能是有意义的?

    过去,我通过 selenium 公开了 Web 服务和 JDBC 测试,作为 QA 人员测试应用程序某些部分的捷径,如果这就是您所说的,但最好通过 Web 服务使用它提到了 Tomasz。

    【讨论】:

    • 感谢您的回复。这个用例让我们思考我的问题是否有意义:我们有一个交易应用程序。公司向我们注册。管理员角色用户确认他们。确认后用户可以登录并且用户可以执行我们的应用程序的用途。对于每个确认用户的测试用例,用户都需要先登录,这增加了我们的测试时间。 (每次测试的登录时间在 10-20 秒之间)这让我们想到也许我们可以像在 Seam Tests 中那样跳过这一步。
    • 冒着明显的风险:为什么您需要在每个测试用例开始时先登录?是否无法以登录一次的方式重构您的测试?另一种策略是在测试环境中“模拟”登录操作​​(在后端使用假控制器或类似的东西),这将更快地返回。
    • 我正在纠正“每个测试”的事情。不是每次测试。仅用于确认的用户操作测试。我们已经写了套装,但要在套装中进行测试?
    猜你喜欢
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多