I'm not sure whether or not we should support "named descriptions" without a class attached. I wonder what are they really for?

If we want to support this any longer, than I think we should extract a ClassBasedDescriptionBuilder and a NameBasedDescriptionBuilder and have the Factory DescriptionBuilder construction the right one for the given parameters. In this case the createSuiteDescription and createTestDescription of the NameBasedDescriptionBuilder would return a NamedSuiteDescription or NamedTestDescription that will guarantee that getClassName() and getMethodName() will always return null. What do you think?

PS: While I walked through the paths of the factory methods of the Description class, I found that one of the factories leads to a NullPointerException:

Description createSuiteDescription(String name, Annotation... annotations);

It calls Description(null, String name, annotations), which internally calls this(clazz, displayName, clazz.getCanonicalName(), annotations), throwing a NullPointerException as clazz is null.

I don't want to fix it in this issue. Shall we create a new issue/patch for this?