Мне тоже было интересно об этом, и хотя я думаю, что ответ Даффимо в порядке, он не самый лучший.
Проблемы, которые я вижу, - это вещи, которые вы не всегда можете знать или, как вы указали вкомментарии, символы новой строки и другие пробелы, которые, вероятно, не имеют значения.
Так что я думаю, что лучше вместо использования assertEquals, я бы сказал, использовать assertTrue в сочетании с contains (проверяет, существует ли конкретная строка вString) и / или соответствия (использует регулярное выражение, чтобы увидеть, содержит ли String определенный шаблон).
Допустим, вы работаете с классом Name, определенным как
public class Name {
// each of these can only be alphabetic characters
String first;
String middle;
String last;
// a bunch of methods here
String toString(){
String out = "first=" + first + "\n" +
"middle=" + middle + "\n" +
"last=" + last + "\n" +
"full name=" + first + " " middle + " " + last;
}
}
Итак, теперь выпроверьте это следующим образом (предположим, что name - это объект Name, созданный в предыдущем методе setUp)
void toStringTest1(){
String toString = name.toString();
// this test checks that the String at least is
// outputting "first=" followed by the first variable
// but the first variable may incorrect 1's and 0's
assertTrue(toString.contains("first=" + first));
}
void toStringTest2(){
String toString = name.toString();
// this test checks that the String has "first="
// followed by only alphabetic characters
assertTrue(toString.matches("first=[a-zA-Z]*?"));
}
Этот вид тестирования гораздо надежнее, чем то, что сказал duffymo.Если вы хотите, чтобы toString содержал хеш-код, вы не могли бы заранее знать, каким может быть ожидаемое значение.
Это также позволяет вам охватить гораздо больше возможностей.Может случиться так, что ваше единственное ожидаемое значение как раз соответствует случаю, для которого оно работает.
Кроме того, имейте в виду, что вы также хотели бы иметь тесты (в моем данном случае) для установки первой переменной,И хотя можно подумать, что было бы достаточно иметь тест setFirst, лучше иметь больше тестов по всем направлениям, потому что может быть, что setFirst работает, но у вас что-то не так в toString (может быть, вы сначала разбили и добавили: не осознавая этого)
Больше тестов многих видов всегда лучше!