如何使用TestNG对大小写不同的两个字符串执行assertEquals断言校验
TestNG忽略字符串大小写的相等断言方案
TestNG 原生的assertEquals方法默认执行大小写敏感的字符串对比,直接传入"hello world"和"HELLO world"会触发断言失败,要实现忽略大小写的校验可选择以下两种方案:
方案1:使用内置忽略大小写断言(推荐,适配TestNG 6.1及以上版本)
TestNG 官方已经提供了专门的assertEqualsIgnoreCase方法,无需手动处理字符串转换,直接调用即可完成忽略大小写的相等校验:
import org.testng.Assert; import org.testng.annotations.Test; public class StringEqualsTest { @Test public void testIgnoreCaseAssert() { String lowerStr = "hello world"; String mixedCaseStr = "HELLO world"; // 参数顺序:第一个为实际值,第二个为期望值 Assert.assertEqualsIgnoreCase(mixedCaseStr, lowerStr); } }
该方法的报错提示和常规assertEquals保持一致,会清晰展示两个字符串的差异,无需额外自定义失败描述。
方案2:手动统一大小写后校验(适配TestNG 6.1以下版本)
如果使用的TestNG版本较低没有内置上述方法,可以手动将两个字符串统一转换为全小写或全大写后,再用普通assertEquals对比:
import org.testng.Assert; import org.testng.annotations.Test; import java.util.Locale; public class StringEqualsTest { @Test public void testManualIgnoreCaseAssert() { String lowerStr = "hello world"; String mixedCaseStr = "HELLO world"; // 指定Locale避免特殊语言的大小写转换规则导致的异常,不需要可去掉Locale参数 Assert.assertEquals(mixedCaseStr.toLowerCase(Locale.ROOT), lowerStr.toLowerCase(Locale.ROOT)); } }
注意事项
- 如果校验场景涉及非英语的特殊字符,建议统一指定Locale参数,避免本地默认语言的大小写转换规则导致预期外的校验失败。
- 若允许输入字符串为null,建议先添加非空断言,避免调用大小写转换方法时触发空指针异常。
内容的提问来源于stack exchange,提问作者Bk Karim
相关产品推荐
相关产品推荐

