我在运行 QrServiceTest 的任何测试方法时遇到问题。我遇到了如下所示的问题
com.google.zxing.NotFoundException
问题线在这部分(
new MultiFormatReader().decode(binaryBitMap)
).
我无法解码位图。我该如何解决?
这是我用于 qr 的依赖项
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.5.1</version>
</dependency>
这是下面显示的QrServiceTest
@ExtendWith(MockitoExtension.class)
class QrServiceTest{
@InjectMocks
QrService qrService;
@SneakyThrows
@Test
void createQrCodeWithoutImage() {
var requestDTO = DummyData.getDummyCreateQrRequestDTO();
var responseDTO = qrService.createQrCode(requestDTO);
assertThat(responseDTO).isNotNull();
assertThat(responseDTO.getBody()).isNotNull().isNotEmpty();
var binaryBitMap = new BinaryBitmap(new HybridBinarizer(
new BufferedImageLuminanceSource(ImageIO.read(new ByteArrayInputStream(responseDTO.getBody())))));
var result = new MultiFormatReader().decode(binaryBitMap);
assertEquals(result.getText(), requestDTO.getText());
assertEquals(result.getBarcodeFormat(), BarcodeFormat.QR_CODE);
}
@SneakyThrows
@Test
void createQrCodeWithImage() {
var requestDTO = DummyData.getDummyCreateQrRequestDTO();
requestDTO.setImage(new ClassPathResource("java-original-wordmark.png").getInputStream().readAllBytes());
var responseDTO = qrService.createQrCode(requestDTO);
assertThat(responseDTO).isNotNull();
assertThat(responseDTO.getBody()).isNotNull().isNotEmpty();
var binaryBitMap = new BinaryBitmap(new HybridBinarizer(
new BufferedImageLuminanceSource(ImageIO.read(new ByteArrayInputStream(responseDTO.getBody())))));
var result = new MultiFormatReader().decode(binaryBitMap);
assertEquals(result.getText(), requestDTO.getText());
assertEquals(result.getBarcodeFormat(), BarcodeFormat.QR_CODE);
}
}
问题就在这里
var binaryBitMap = new BinaryBitmap(new HybridBinarizer(
new BufferedImageLuminanceSource(ImageIO.read(new ByteArrayInputStream(responseDTO.getBody())))));
var result = new MultiFormatReader().decode(binaryBitMap);
这是回购协议:Link