The error message should add context to the error message. So all that saves you, you need to deploy in the test code to find out what failed.
So, if the [method name, expected, actual] set is adequate for the above purpose, you can skip the error message. If you need more information, add an additional error message.
eg. Expected true but was false , doesn't tell me anything.
You can use the error message so that Return value should contain only multiples of 10. Expected true but was false
You can try using more descriptive matches first. So the errors read by Expected all items to be divisible by 10 but was [10,20,35,40] , really.
Personally, I prefer coincidences ... using failure messages as a last resort. (because, like comments, it breaks up. You need the discipline to update the error message if you change the check.)
source share