![](/img/trans.png)
[英]how to compare two or more values in excel with values in li and report pass or fail in same excel using apache poi selenium webdriver java
[英]How can multiple threads (parallel testcases) access same excel file at same time using Apache POI in Java (Selenium) setup?
我有几个与数据相关的测试方案,其中有一个Excel文件作为数据源,并且需要同时从该文件执行多个测试用例。
我已经准备了一个解决方案,可以一次运行1个测试。 但是当我尝试运行多个测试时,Apache抛出错误。 我认为这是因为多个线程试图同时访问同一资源。 如何克服这种情况? 我的解决方案使用Java中的Apache-POI库进行Selenium测试。
编辑:
错误消息: org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException:无法保存:保存程序包时发生错误:/xl/media/image13.png部分无法通过编组org.apache保存在流中。 poi.openxml4j.opc.internal.marshallers.DefaultMarshaller@329cf141
作业系统: Windows 10,x64
代码: 步骤1:创建工作簿对象,如下所示
Workbook wb = null;
try {
wb = WorkbookFactory.create(input_file);
} catch (java.io.FileNotFoundException e) {
Results.fail("Excel file not found at this location: " + Excel_File_Name_And_Path);
}
步骤2:遍历所有行并将相关信息保存到各种Java变量中
步骤3:关闭Workbook对象并进行测试(现在具有所有相关数据)
ExcelConfiguration.closeworkbook(wb);
public static void closeworkbook(Workbook wb) {
try {
wb.close();
System.out.println("workbook closed");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException ioexcep) {
ioexcep.printStackTrace();
}
}
当您关闭文件时,POI似乎正在写回该文件。 您可以尝试通过其他create
调用以只读模式打开它:
wb = WorkbookFactory.create(input_file, null, true);
这将以只读模式打开文件,并且应跳过“关闭时写入”行为。
如果您不想深入研究POI内部,只需在static
初始化块的singleton类中将其加载一次即可。
如果您的代码是真正的只读代码,那么应该没有不利的一面,因为在类初始化期间, static
块只会执行一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.