下面的工厂类用于获取驱动程序以供执行
public class DriverFactory {
//holds the device config
public static Map<String, String> devConfig = new ConcurrentHashMap<>();
//other lines of code follow
}
此配置从外部数据源加载到 junit 类中,如下所示:
@RunWith(ConcurrentTestRunner.class)
public class MyTestRunner{
static final int THREAD_COUNT = 1;
@ThreadCount(THREAD_COUNT) @Override @Test
public void run(){
// Devices class returns config for the device
DriverFactory.devConfig = Devices.getConfig()
//other lines of code to perform execution
}
}
如果其他类在执行过程中需要设备配置,则访问如下:
public class MobileActions{
public void swipe(){
String pf = DriverFactory.devConfig.get("Platform");
//other lines of code
}
}
这种方法(将 devConfig 设为静态)工作正常,只有一个线程。现在,为了支持跨设备并行执行,如果线程数更改为 2,则 devConfig 将始终具有由第二个线程设置的值。
为了避免这个问题,如果 devConfig 是非静态的,我们必须在所有其他类中注入这个变量,例如,在上面的 MobileActions 类中。有没有办法让这个变量保持静态但在多线程执行期间仍然有效(每个线程应该处理它自己的 devConfig 副本)。我们还尝试将此变量设为 ThreadLocal<>,但这也无济于事。
米脂
慕雪6442864
相关分类