Steven Schveighoffer wrote:
> On Mon, 16 Aug 2010 12:57:22 -0400, Jonathan M Davis
> <jmdavisp...@gmail.com> wrote:

>> Of greater value is testing that normal exceptions are thrown when
>> they're
>> supposed to - especially for bad input. Testing that is essentially
>> the same as
>> testing for AssertErrors except that they're regular exceptions, so
>> you don't
>> have the whole issue with Errors not getting cleaned up properly. In
>> the case of
>> normal exceptions though, it is arguably part of the API (albeit not
>> part of the
>> signature), while for AssertError it's a contract which isn't really
>> part of the
>> API so much as verifying that your code is correct.
>
> I whole-heartedly agree, and the code I use for this is:
>
> bool caughtException = false;
> try
> {
>    functionThatShouldThrow(badInput);
> }
> catch(SpecificException e)
> {
>    caughtException = true;
> }
> assert(caughtException);

I've used the same. :) We should have something like ensure_throws:

  ensure_throws!SpecificException(functionThatShouldThrow(badInput));

Perhaps some of the existing unit test libraries already have that.

Ali

Reply via email to