TestNG中assertEquals()与assertTrue()之间的实际区别是什么?

Jai*_*dia 15 testng

我对这两种方法都很困惑,因为两者都可以做同样的事情,比如下面我的代码片段.

使用assertEquals()

String a = "Hello";
String b = "Hello";

assertEquals(a, b);
Run Code Online (Sandbox Code Playgroud)

使用assertTrue()

assertTrue(a.equals(b));
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这两种方法之间的实际区别?

Jon*_*eet 35

assertEquals 更好,因为它为单元测试框架提供了更多关于你真正感兴趣的信息.这使得它可以在测试失败时提供更好的错误信息.

假设你有

String a = "Hello";
String b = "Hi";
Run Code Online (Sandbox Code Playgroud)

那么测试失败可能看起来像:

// From assertEquals(a, b)
Error: Expected "Hi"; was "Hello"

// From assertTrue:
Error: Expected true; was false
Run Code Online (Sandbox Code Playgroud)

您认为哪些方法可以为您提供更多信息,请记住这些值可能是合理复杂计算的结果?

(这些都是由于我没有安装testng而构成错误消息,但它们是单元测试框架提供的那种东西.)

  • 另外,`assertEquals(a,b)`是空安全的,`assertTrue(a.equals(b))`不是. (10认同)