【问题标题】:I want to highlight the text in some other color for a delta(difference) found when two strings are compared我想以其他颜色突出显示比较两个字符串时发现的增量(差异)的文本
【发布时间】:2019-08-08 09:05:22
【问题描述】:

extentreport1。我正在编写一个程序来使用 DiffUtils.diff(actualHTML, expHTML) 比较两个字符串。 2.如果两个字符串有差异,会打印delta 3. 我在范围报告中报告该增量 4.我想在放入范围报告时,用其他颜色突出显示两个字符串中的更改部分。 例如。字符串 1:这是原始文本,字符串 2:这是修改后的文本 原始和修订应该在范围报告中使用其他颜色。 5. 这个可以吗?

public static void main(String[] args) throws DiffException {

    String filePath=System.getProperty("user.dir") + "/test- 
    output/STMExtentReport" + new Date().getTime() + ".html";
    ExtentReports extent = new ExtentReports();
    ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter(filePath);
    extent.attachReporter(htmlReporter);
    ExtentTest test = extent.createTest("TestName");
    String originalText = "This is original text";
    String revisedText = "This is revised text"; 

    Patch<String> patch = DiffUtils.diff(originalText, revisedText);
    if (patch.getDeltas().size() != 0) {
      for (Delta<String> diffInActAndExpContent : patch.getDeltas())
     {
       System.out.println("delta:" + diffInActAndExpContent);
       test.fail(diffInActAndExpContent.toString()); 
     }
     } else {
       System.out.println("No content mismatch found by 
       ComputeDiffTwoFiles.");
    }
    extent.flush();
}

【问题讨论】:

标签: java html extentreports selenium-extent-report


【解决方案1】:
System.out.print("This is black! ");
System.err.println("This is red!");

但如果你在 cmd 中运行,两者的颜色会相同。

【讨论】:

  • 感谢您的回复。我希望颜色反映在范围报告中,而不是在控制台中。此外,彩色文本应该只在 2 个字符串中不同,而不是整个字符串。
  • 我不太明白你的意思。您还有问题需要帮助吗?
  • 添加了extentreport的链接。请点击链接查看图片。我希望“原始”和“修订”文本出现在让我们说红色。
【解决方案2】:

据我了解,您追求的是字符差异,但 DiffUtils 提供了线条差异。您可能需要编写一些逻辑来找出这两个字符串之间的实际字符差异。 一种方法是使用 apache lang 包中的 StringUtils,但它只是给出了与 2 个字符串之间的第一个不匹配字符的区别。如果它解决了您的问题,您可以使用下面的代码,或者编写逻辑来找出实际的字符差异并使用它而不是 StringUtils。范围报告只不过是一个 html 文件,可以按照您喜欢的任何方式进行格式化,请参见下面以红色突出显示的示例 -

    Patch<String> patch = DiffUtils.diff(originalText, revisedText);
    if (patch.getDeltas().size() != 0) {
        for (Delta<String> diffInActAndExpContent : patch.getDeltas()) {
            System.out.println("delta:" + diffInActAndExpContent);
            String diff = StringUtils.difference(diffInActAndExpContent.getOriginal().toString(), diffInActAndExpContent.getRevised().toString());

            test.fail(diffInActAndExpContent.toString().replace(diff, "<font color=red>" + diff + "</font>"));
        }
    } else {
        System.out.println("No content mismatch found by ComputeDiffTwoFiles.");
    }

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多