/* * Licensed to the Apache Software Foundation (ASF) under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional information regarding * copyright ownership. The ASF licenses this file to You 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. See the License for the specific language governing permissions and limitations under * the License. */ package org.apache.geode.examples; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; public class ExpectedExceptionTest { private static final AtomicBoolean BUG = new AtomicBoolean(true); @Test(expected = RuntimeException.class) public void incorrect() { one(); two(); three(); } private void one() { // do something } private void two() { // do something if (BUG.get()) { throw new RuntimeException("Encountered Bug!"); } } private void three() { throw new RuntimeException("Boo!"); } @Test public void correct() { one(); two(); Throwable thrown = catchThrowable(() -> three()); assertThat(thrown) .isInstanceOf(RuntimeException.class) .hasMessage("Boo!"); } }