在ResultBuilderTest测试用例失败之后,在jenkins gradle构建管道中。但是,当我在本地运行“ gradlew build”时,这种情况是成功的。但是在下面的情况下,当在构建过程中Jenkins服务器中正在运行相同的测试用例时,相同的测试用例将失败(从服务器日志中捕捉)-
任务:测试 捡起JAVA_TOOL_OPTIONS:-XX:+ UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping = true
com.sabre.ticketing.ndc.fulfillsvc.service.document.update.result.ResultBuilderTest> shouldBuildResultsHeadFail()失败 ResultBuilderTest.java:84上的java.lang.StringIndexOutOfBoundsException
583个测试已完成,1个失败
任务:测试失败
在Junit下-以下测试用例在詹金斯中失败(代码如下):
@Test
@DisplayName("build Results for PSS head failure - single 8080 with error")
void shouldBuildResultsHeadFail() {
var pssResponse = ByteConversionUtil.hexStringToByteArray(readFile("response/document/pss-head-failure.dat"));
var response = ResponseEntity.ok(pssResponse);
assertThrows(UpdateDocumentException.class, () -> resultBuilder.parse(response, transaction));
}
正在读取pss-head-failure.dat,其十六进制内容为-
006E801000000000000000000000000000000000000001000A000040404040000100510000E5C3E40001C5E84040404040404040404040404040404040404040404040040040040040040040040040040040040040040040040040040040C040E040C040M040C400000000000000000000000000000000000000M000000000000000000003680800000000000000000000000000000000000000100000000C5000000000000110000E4D5C1C2D2(4C)
现在要根据我的命中和试用版来纠正此问题,我刚刚从pss-head-failure.dat文件中删除了“空白处的新行”,然后在jenkin服务器中建立了gradle构建。我相信我公司的jenkins服务器正在Linux Red Hat平台上运行。是不是因为两个不同的机器在新的空白行上引起了对十六进制字符串的不同感知,而Windows机器却没有导致java.lang.StringIndexOutOfBoundsException而是Linux机器引起了这种现象?任何专家都认为,随着gradle的构建在本地通过,许多事情使我们疯狂,但jenkin的gradle的构建却失败了。
ps:我试图以概括的方式来解释我的问题,因为这里无法捕获所有内容。如果造成您的迷惑,请先抱歉!