=begin
This feature needs at least consensus among test frame work authors.
And it needs more use cases.
Your proposal prevents to define Assertion class it inherits other than Exception class.
=end
Pretty sure Assertion has to be subclass of Exception, because the way test runners work is to use #rescue to catch Assertion failure and other exceptions. Test framework developers can still subclass it for their own specific purposes, e.g. original TestUnit library could do:
module Test
module Unit
class Failure < Assertion
An alternative is to define methods Exception#assertion? and Exception#set_assertion(boolean). Then test framework developers can use that to differentiate assertions from other errors.