【问题标题】:Can we use static Pojo methods when running tests concurrently?我们可以在同时运行测试时使用静态 Pojo 方法吗?
【发布时间】:2019-10-07 14:05:15
【问题描述】:

目前,我已经建立了一个自动化测试框架,它执行以下操作:

  1. 同时执行特定测试(即同时执行 x3 测试 时间)。
  2. 框架使用 Cucumber BDD。
  3. 我需要跨步骤存储和共享数据。

我需要您关于在同时运行测试时使用静态方法和变量的建议,即使在同时运行测试时数据是否也能正确存储?

public class Chat_Pojo {

    private static String messageToSend;

    public static void storeUniqueMessage(String message) {
        messageToSend = message;
    }

    public static String getUniqueMessage() {
        return messageToSend;
    }

    public static void wipeMessage() {
        messageToSend = null;
    }
    ...
}

【问题讨论】:

    标签: java selenium selenium-webdriver cucumber pojo


    【解决方案1】:

    private static String messageToSend; 仅属于 Chat_Pojo 类,因此如果您不想共享该值,则应使用 private static ThreadLocal<String> messageToSend 对其进行修改。在这种情况下,每个线程都有自己的messageToSend 值。如果您想获得该值,则需要分别致电set()get() 如果要在线程之间共享该值,则需要同步修改方法(public static void storeUniqueMessage(String message)public static void wipeMessage()

    【讨论】:

    • 感谢 @Vault23 在使用 getter 和 setter 方法时的帮助基础?并且使用同步只是为了应用关键字同步; public synchronized void storeUniqueMessage(String message) ?
    • 根据.get().set() 我的意思是ThreadLocal 获取值的类方法,存储在ThreadLocal 中(阅读文档here)。是的,添加synchronized 就足够了
    猜你喜欢
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多