首页 > 解决方案 > tess4J 应用程序的 JUnit 测试

问题描述

我想测试我的方法,看看它是否能正确读取文件。我似乎无法完全理解 JUnit 测试。有人可以告诉我如何正确编写此代码的 JUnit 测试:

import java.io.File;
import net.sourceforge.tess4j.*;
import net.sourceforge.tess4j.util.LoadLibs;

public class ImageTest {

    public static String imageService(String filePath) {
        File imageFile = new File("tessImage.png");
        ITesseract instance = new Tesseract();

        //Let tessdata be extracted in case you dont have tessdata folder
        File tessDataFolder = LoadLibs.extractTessResources("tessdata");
        //Set the tessdata path
        instance.setDatapath(tessDataFolder.getAbsolutePath());

        instance.setLanguage("eng");
        try {
            String result = instance.doOCR(imageFile);
            return result;
        } catch (TesseractException e) {
            System.err.println(e.getMessage());
            return "this is an error" ;
        }
    }
}

标签: javajunit

解决方案


前言:你的异常处理是可怕的。当您的调用者期待 OCR 字符串时,不要返回错误消息。坚持JAVA风格。如果出现错误 - 抛出异常!

下一步:您从未真正使用过“filePath”参数。这显然是一个错误。

您首先需要问自己要测试什么。是你要测试的“imageService”方法吗?然后创建第二个类,然后从那里测试您的方法。在这个测试类中,您将获取一个示例文件,调用您的 imageService 并将结果与​​您期望的结果进行比较。这些比较是通过断言语句完成的。请查看 jUnit 文档以获取更多详细信息。


推荐阅读