[java] TestNG를 사용한 QR 코드 테스트

QR 코드는 많은 애플리케이션들에서 사용되고 있는 인코딩된 2차원 바코드입니다. 이번 포스트에서는 TestNG를 사용하여 Java에서 QR 코드를 테스트하는 방법에 대해 알아보겠습니다. QR 코드를 생성하고 디코드하는 것을 테스트할 예정입니다.

QR 코드 생성하기

우선, QR 코드를 생성하기 위해서는 com.google.zxing.qrcode.QRCodeWriter 클래스를 사용할 것입니다. 이 클래스는 Google이 제공하는 Zxing 라이브러리에 포함되어 있습니다. QR 코드를 생성하려면 다음과 같은 코드를 작성할 수 있습니다.

import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class QRCodeGenerator {
    public static void main(String[] args) {
        String qrCodeData = "https://www.example.com";
        String filePath = "/path/to/qrcode.png";
        int size = 250;
        String fileType = "png";

        try {
            BitMatrix bitMatrix = new QRCodeWriter().encode(qrCodeData, BarcodeFormat.QR_CODE, size, size);

            File qrCodeFile = new File(filePath);
            MatrixToImageWriter.writeToFile(bitMatrix, fileType, qrCodeFile);
            System.out.println("QR 코드가 성공적으로 생성되었습니다.");
        } catch (WriterException | IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 qrCodeData 변수에 QR 코드에 인코딩할 데이터를 입력하고, filePath 변수에 QR 코드 이미지 파일의 경로를 입력해야 합니다. size 변수는 QR 코드 이미지의 크기를 결정하며, fileType 변수는 QR 코드 이미지 파일의 형식을 지정합니다.

QR 코드 디코드하기

QR 코드를 디코드하여 인코딩된 데이터를 추출하는 것도 가능합니다. QR 코드 디코드를 위해서는 com.google.zxing.qrcode.QRCodeReader 클래스를 사용할 것입니다. 아래 코드는 QR 코드를 디코드하는 예시입니다.

import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class QRCodeDecoder {
    public static void main(String[] args) {
        String filePath = "/path/to/qrcode.png";

        try {
            BufferedImage bufferedImage = ImageIO.read(new File(filePath));
            BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(bufferedImage)));
            Result result = new MultiFormatReader().decode(binaryBitmap);

            System.out.println("디코드된 데이터: " + result.getText());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 filePath 변수에 디코드할 QR 코드 이미지 파일의 경로를 입력해야 합니다. QR 코드 이미지를 읽고, 바이너리 이미지를 생성한 다음 MultiFormatReader를 사용하여 디코드합니다. 디코드된 결과는 Result 객체의 getText 메소드로 얻을 수 있습니다.

테스트 실행하기

이제 TestNG를 사용하여 QR 코드 생성 및 디코드 테스트를 실행할 수 있습니다. 다음은 테스트 코드의 예시입니다.

import org.testng.Assert;
import org.testng.annotations.Test;

public class QRCodeTest {

    @Test
    public void testQRCodeGeneration() {
        QRCodeGenerator qrcodeGenerator = new QRCodeGenerator();
        qrcodeGenerator.main(null); // QR 코드 생성

        // 생성한 QR 코드 파일이 있는지 확인
        File qrCodeFile = new File("/path/to/qrcode.png");
        Assert.assertTrue(qrCodeFile.exists());
    }

    @Test
    public void testQRCodeDecoding() {
        QRCodeDecoder qrcodeDecoder = new QRCodeDecoder();
        qrcodeDecoder.main(null); // QR 코드 디코드

        // 디코드한 결과가 예상한 값과 일치하는지 확인
        String expectedData = "https://www.example.com";
        Assert.assertEquals(result, expectedData);
    }
}

위 코드에서는 testQRCodeGeneration 메소드에서 QR 코드 생성을 테스트하고, testQRCodeDecoding 메소드에서 QR 코드 디코드를 테스트합니다. Assert 문을 사용하여 생성한 QR 코드 파일이 존재하는지 확인하고, 디코드한 결과가 예상 값과 일치하는지 확인합니다.

마무리

이번 포스트에서는 TestNG를 사용하여 Java에서 QR 코드를 테스트하는 방법에 대해 알아보았습니다. QR 코드를 생성하고 디코드하는 방법을 살펴보고, TestNG를 사용하여 QR 코드 생성 및 디코드 테스트를 작성하는 방법을 배웠습니다.