I'm not the best person to answer your question since I'm curious myself as to what the official answer is, but this is what I found through trial and error. Apparently, each detail item in sbt.TestEvent need not correspond to a specific test case and therefore there is not always a name. What you can do is look at the selector method. There are five different types of Selectors:
SuiteSelector
TestSelector
NestedSuiteSelector
NestedTestSelector
TestWildcardSelector
Of these, the TestSelector and NestedTestSelector have testName methods. In my project all the detail items happen to be TestSelectors and so I can get away with an
val testName = event.selector.asInstanceOf[TestSelector].testName
Your mileage may vary. As far as the error string goes, I think the only thing available is the message on the throwable.
-Jeff