java - 如何断言或验证单元测试中 "almost"相同的 2 段文本

标签 java unit-testing junit testng

作为单元测试的一部分,我想根据实际 API 响应来验证预期响应与实际响应。

所以我有这个:

期望:

disqualified because taxpayer can be claimed as dependent

我想反对这一点:

实际:

disqualified because you can be claimed as a dependent

来自已编译二进制文件的 API 响应。

由于这些文本片段足够接近,我想通过我在测试中的断言:

Assert.assertEquals(titleText.toLowerCase(), t.toLowerCase(), "Did not match!");

显然这个断言没有通过,因为2段文字不相等。

我试过这个:

Assert.assertTrue(titleText.toLowerCase().contains(t.toLowerCase()));

但是测试还是失败了....我怎样才能让这个测试通过呢?任何建议将不胜感激。

最佳答案

您必须自己编写比较器。

class OwnComparator {
    public static boolean checkThoseForEquality(String str1, String str2) {
        // your logic goes here
    }
}

使用它

 assertTrue(OwnComparator.checkThoseForEquality(titleText, t);

您甚至可以将代码中的 toLowerCase() 移动到此比较器,从而使您的通用代码更短。

我不认为期望 testNG 完全实现您所说的“几乎相等”是有效的。

关于java - 如何断言或验证单元测试中 "almost"相同的 2 段文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33008604/

相关文章:

java - JsonObject 和 JSONObject 有什么不同

java - xpath 第一个可用值

java - Java中子进程的输入重定向

java - Junit:如何模拟 HttpUrlConnection

java - 我们从哪里开始使用单元测试?

java - Apache Shiro,没有 GUI?

javascript - 创建类似于 Mocha JavaScript 的单元测试框架

angularjs - Angular Karma 单元测试 : How to inject a mock service in karma configuration instead of in all test specs

c - 使用链接时替换在单元测试中为结构体创建测试替身

java - 包装 JUnit 测试(在 Eclipse 中)