Support Throwables in expectException()
Also fixed some bugs in the junit tests.
Renamed expectException() to assertThrows().
Added test cases.
Change-Id: I13dff0007e35c2d2521a4ca40bb65e6820416ed1
Issue-ID: POLICY-1148
Signed-off-by: Jim Hahn <jrh3@att.com>
diff --git a/utils-test/src/main/java/org/onap/policy/common/utils/test/PolicyAssert.java b/utils-test/src/main/java/org/onap/policy/common/utils/test/PolicyAssert.java
index fdd098f..43bb779 100644
--- a/utils-test/src/main/java/org/onap/policy/common/utils/test/PolicyAssert.java
+++ b/utils-test/src/main/java/org/onap/policy/common/utils/test/PolicyAssert.java
@@ -34,21 +34,24 @@
*
* @param clazz class of exception that is expected
* @param func function
- * @return object
+ * @return the exception that was thrown
+ * @throws AssertionError if the function does not throw an exception or throws the
+ * wrong type of exception
*/
- public static <T> T assertException(Class<T> clazz, RunnableWithEx func) {
+ public static <T extends Throwable> T assertThrows(Class<T> clazz, RunnableWithEx func) {
try {
func.run();
- throw new AssertionError("missing exception");
- } catch (Exception e) {
+ } catch (Throwable thrown) {
try {
- return clazz.cast(e);
+ return clazz.cast(thrown);
- } catch (ClassCastException e2) {
- throw new AssertionError("incorrect exception type", e2);
+ } catch (ClassCastException thrown2) {
+ throw new AssertionError("incorrect exception type", thrown2);
}
}
+
+ throw new AssertionError("missing exception");
}
/**
@@ -56,6 +59,6 @@
*/
@FunctionalInterface
public static interface RunnableWithEx {
- public void run() throws Exception;
+ public void run() throws Throwable;
}
}
diff --git a/utils-test/src/test/java/org/onap/policy/common/utils/test/PolicyAssertTest.java b/utils-test/src/test/java/org/onap/policy/common/utils/test/PolicyAssertTest.java
index 2831905..f41d7b3 100644
--- a/utils-test/src/test/java/org/onap/policy/common/utils/test/PolicyAssertTest.java
+++ b/utils-test/src/test/java/org/onap/policy/common/utils/test/PolicyAssertTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,7 +22,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import static org.onap.policy.common.utils.test.PolicyAssert.assertException;
+import static org.onap.policy.common.utils.test.PolicyAssert.assertThrows;
import org.junit.Test;
@@ -32,36 +32,54 @@
@Test
public void test_ExpectedEx() {
- assertException(IllegalArgumentException.class, () -> {
+ // exact type
+ assertThrows(IllegalArgumentException.class, () -> {
throw new IllegalArgumentException(EXPECTED);
});
+
+ // cast to superclass is supported
+ assertThrows(RuntimeException.class, () -> {
+ throw new IllegalArgumentException(EXPECTED);
+ });
+
+ // supports errors
+ assertThrows(LinkageError.class, () -> {
+ throw new LinkageError(EXPECTED);
+ });
+
+ // supports any throwable
+ assertThrows(Throwable.class, () -> {
+ throw new Throwable(EXPECTED);
+ });
}
@Test
public void test_IncorrectEx() {
try {
- assertException(IllegalStateException.class, () -> {
+ assertThrows(IllegalStateException.class, () -> {
throw new IllegalArgumentException(EXPECTED);
});
- fail("incorrect exception type");
-
} catch (AssertionError err) {
assertTrue(err.getMessage().contains("incorrect exception type"));
+ return;
}
+
+ fail("test failed for incorrect exception type");
}
@Test
public void test_MissingEx() {
try {
- assertException(IllegalArgumentException.class, () -> {
+ assertThrows(IllegalArgumentException.class, () -> {
});
- fail("missing exception");
-
} catch (AssertionError err) {
assertTrue(err.getMessage().contains("missing exception"));
+ return;
}
+
+ fail("test failed for missing exception");
}
}