Какова фактическая разница между assertEquals() и assertTrue() в TestNG?

Я запутался в обоих этих методах, потому что оба могут сделать то же самое, как ниже фрагмент кода.

Использование assertEquals()

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

assertEquals(a, b);

Использование assertTrue()

assertTrue(a.equals(b));

Может ли кто-нибудь сказать мне фактическую разницу между обоими этими двумя методами?

Ответ 1

assertEquals лучше, потому что он предоставляет unit test фреймворку больше информации о том, что вас действительно интересует. Это позволяет ему предоставлять лучшую информацию об ошибках, когда тест терпит неудачу.

Предположим, что у вас был

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

Тогда ошибки тестирования могут выглядеть примерно так:

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

// From assertTrue:
Error: Expected true; was false

Какой из них, по вашему мнению, дает вам больше информации, имея в виду, что значения, вероятно, были бы результатом достаточно сложных вычислений?

(Это составлены сообщения об ошибках, так как у меня нет testng, но они представляют собой структуру unit test framework.)