* This will result in the test passing if the {@code Foo.someBusinessLogic(..)}
* method threw an {@link IllegalArgumentException}; if it did not, the
* <p>This will result in the test passing if the {@code Foo.someBusinessLogic(..)}
* method threw an {@code IllegalArgumentException}; if it did not, the
* test would fail with the following message:
*
* <pre class="code">
* "Must have thrown a [class java.lang.IllegalArgumentException]"</pre>
* <pre class="code">"Must have thrown a [class java.lang.IllegalArgumentException]"</pre>
*
* If the <b>wrong</b> type of {@link Exception} was thrown, the
* test will also fail, this time with a message similar to the following:
* <p>If the <strong>wrong</strong> type of {@code Exception} was thrown,
* the test will also fail, this time with a message similar to the following:
*
* <pre class="code">
* "java.lang.AssertionError: Was expecting a [class java.lang.UnsupportedOperationException] to be thrown, but instead a [class java.lang.IllegalArgumentException] was thrown"</pre>
* <pre class="code">"java.lang.AssertionError: Was expecting a [class java.lang.UnsupportedOperationException] to be thrown, but instead a [class java.lang.IllegalArgumentException] was thrown"</pre>
*
* The test for the correct {@link Exception} respects polymorphism,
* so you can test that any old {@link Exception} is thrown like so:
* <p>The test for the correct {@code Exception} respects polymorphism,
* so you can test that any old {@code Exception} is thrown like so: