java-输出为文本墙时的单元测试

我目前正在测试应用程序的一部分(我们假设是一个名为X的类),该部分将反射java方法作为参数,并将基于它来打印一些Java代码(即它是一个代码生成器).例如,将String.toString()传递给X时,呈现的字符串输出将是:

public static java.lang.String toString(String thisObj, boolean isMonitoring) {
    String thisObjOld = (String)thisObj.clone(thisObj, false);

    if (isMonitoring) {
        toStringPre(thisObj);
    }

    java.lang.String result = thisObj.toString_Original();

    if (isMonitoring) {
        toStringPost(thisObj, thisObjOld, result);
    }

    return result
}

现在,我想知道如何测试此输出.我想测试不同的东西(分别).

我知道最理想的做法是在印刷之前对抽象表示进行断言,而不要对最终文本进行断言.但不幸的是,似乎要进行太多的工作.

我要测试的示例包括:

>如果返回类型正确(java.lang.String);
>如果该方法的名称正确(toString)以及其参数`(String thisObj,boolean isMonitoring).

如何更好地解决这个问题?使用正则表达式?使用String.split()吗?

最佳答案
编译生成代码该如何处理-测试代码在语法上是否正确.

然后使用Reflection检查名称,参数和返回类型.

然后在模拟环境中运行它,以检查它是否应执行的操作.

转载注明原文:java-输出为文本墙时的单元测试 - 代码日志