问题描述
我有通过 Maven Surefire 插件并行运行的 Cucumber 测试。有时代码会抛出一个错误:selenium.ScriptTimeoutException: java.util.concurrent.TimeoutException,这显然与并行运行有关。但我不知道如何避免它。
这是整个错误日志:
SELECT *
FROM crosstab( 'select 1 as "ID",''4'' as "State",AVG((EXTRACT(EPOCH
FROM t_processing_status.created_date - B_t_processing_status.acceptance_date))) as "t_Avg"
FROM t_processing_status,t_processing_status AS B_t_processing_status
where t_processing_status.declaration_id in
(SELECT declaration_id
FROM t_declarations
WHERE submitter_reference like ''%H700%'') -- retrive all declaration ids
and t_processing_status.processing_status_type =''4''
AND B_t_processing_status.declaration_id=t_processing_status.declaration_id
and B_t_processing_status.acceptance_date BETWEEN ''2021-03-31T04:59:33Z'' AND ''2021-04-07T15:11:47.907Z''
AND B_t_processing_status.acceptance_date notnull
union
select 2 as "ID",''12'' as "State",t_processing_status AS B_t_processing_status
where t_processing_status.declaration_id in
(SELECT declaration_id
FROM t_declarations
WHERE submitter_reference like ''%H700%'') -- retrive all declaration ids
and t_processing_status.processing_status_type =''12''
AND B_t_processing_status.declaration_id=t_processing_status.declaration_id
and B_t_processing_status.acceptance_date BETWEEN ''2021-03-31T04:59:33Z'' AND ''2021-04-07T15:11:47.907Z''
AND B_t_processing_status.acceptance_date notnull
')
AS final_result(ID Integer,State TEXT,t_Avg float8);
解决方法
所以解决方案是限制并行运行的数量,因为我的 VPS 上有资源。 来自我的 pom.xml 的示例
<!-- Plugin create text and xml reports -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<!-- Parallel run settings https://cucumber.io/docs/guides/parallel-execution/ -->
<configuration>
<parallel>methods</parallel>
<threadCount>2</threadCount>
<perCoreThreadCount>false</perCoreThreadCount><!-- IMPORTANT!!! -->
<includes>
<include>${category}</include>
</includes>
</configuration>
</plugin>