com.google.zxing.NotFoundException 在使用 JUnit 测试的 Spring Boot 中 QR 代码过程的解码问题

问题描述 投票:0回答:0

我在运行 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

java spring-boot junit qr-code zxing
© www.soinside.com 2019 - 2024. All rights reserved.