From ee70adfa3010dbde69e2fffda8527d81a6429e96 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Wed, 3 Oct 2018 12:09:28 -0400 Subject: 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 --- .../policy/common/utils/test/PolicyAssert.java | 19 ++++++----- .../policy/common/utils/test/PolicyAssertTest.java | 38 ++++++++++++++++------ 2 files changed, 39 insertions(+), 18 deletions(-) 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 fdd098f6..43bb7792 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 @@ public class PolicyAssert { * * @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 assertException(Class clazz, RunnableWithEx func) { + public static T assertThrows(Class 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 @@ public class PolicyAssert { */ @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 2831905c..f41d7b3a 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 @@ package org.onap.policy.common.utils.test; 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 @@ public class PolicyAssertTest { @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"); } } -- cgit 1.2.3-korg