当 运行 并发测试时,我们可以使用静态 Pojo 方法吗?
Can we use static Pojo methods when running tests concurrently?
目前,我已经建立了一个执行以下操作的自动化测试框架:
- 并发执行特定测试(即同时进行 x3 测试
时间)。
- 该框架使用 Cucumber BDD。
- 我需要跨步骤存储和共享数据。
我需要您关于在 运行 并发测试时使用静态方法和变量的建议,即使在 运行 并发测试时数据也会正确存储吗?
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;
}
...
}
private static String messageToSend;
仅属于 Chat_Pojo
class,因此如果您不想共享该值,则应将其修改为 private static ThreadLocal<String> messageToSend
。在这种情况下,每个线程都有自己的 messageToSend
值。分别如果你想得到那个值,你需要调用 set()
或 get()
如果要在线程之间共享该值,则需要同步修改方法( public static void storeUniqueMessage(String message)
和 public static void wipeMessage()
)
目前,我已经建立了一个执行以下操作的自动化测试框架:
- 并发执行特定测试(即同时进行 x3 测试 时间)。
- 该框架使用 Cucumber BDD。
- 我需要跨步骤存储和共享数据。
我需要您关于在 运行 并发测试时使用静态方法和变量的建议,即使在 运行 并发测试时数据也会正确存储吗?
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;
}
...
}
private static String messageToSend;
仅属于 Chat_Pojo
class,因此如果您不想共享该值,则应将其修改为 private static ThreadLocal<String> messageToSend
。在这种情况下,每个线程都有自己的 messageToSend
值。分别如果你想得到那个值,你需要调用 set()
或 get()
如果要在线程之间共享该值,则需要同步修改方法( public static void storeUniqueMessage(String message)
和 public static void wipeMessage()
)