In Ruby's test/unit, and other such nunit style frameworks, what makes a good failure message?
Should the failure message merely describe how the expected value does not match the expected value?
assert_match("hey", "hey this is a test", "The word does not exist in the string")
Should it describe what you expected to happen?
assert_match("hey", "hey this is a test", "I expected hey to be in the string")
Should it describe why you wanted the behavior to happen?
assert_match("hey", "hey this is a test", "Program should provide a greeting")
Should it describe why you thought the test may fail?
assert_match("konnichiwa", "konnichiwa this is a test",
"Program failed to use supplied i18n configuration")
Should information about tests also exist in the name of the test method, and in the name of the test case?
This is based on Ruby "test/unit" , how do I display the messages in asserts