/*
* Copyright 2002-2007 the original author or authors.
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.test.context;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.springframework.test.context.support.AbstractTestExecutionListener;
/**
* <p>
* JUnit 4 based unit test for the
* {@link TestExecutionListeners @TestExecutionListeners} annotation, which
* verifies:
* </p>
* <ul>
* <li>Proper registering of {@link TestExecutionListener listeners} in
* conjunction with a {@link TestContextManager}</li>
* <li><em>Inherited</em> functionality proposed in <a
* href="http://opensource.atlassian.com/projects/spring/browse/SPR-3896"
* target="_blank">SPR-3896</a></li>
* </ul>
*
* @author Sam Brannen
* @since 2.5
*/
public class TestExecutionListenersTests {
@Test
public void verifyNumDefaultListenersRegistered() throws Exception {
TestContextManager testContextManager = new TestContextManager(DefaultListenersExampleTest.class);
assertEquals("Verifying the number of registered TestExecutionListeners for DefaultListenersExampleTest.", 3,
testContextManager.getTestExecutionListeners().size());
}
@Test
public void verifyNumNonInheritedDefaultListenersRegistered() throws Exception {
TestContextManager testContextManager = new TestContextManager(NonInheritedDefaultListenersExampleTest.class);
assertEquals(
"Verifying the number of registered TestExecutionListeners for NonInheritedDefaultListenersExampleTest.",
1, testContextManager.getTestExecutionListeners().size());
}
@Test
public void verifyNumInheritedDefaultListenersRegistered() throws Exception {
TestContextManager testContextManager = new TestContextManager(InheritedDefaultListenersExampleTest.class);
assertEquals(
"Verifying the number of registered TestExecutionListeners for InheritedDefaultListenersExampleTest.",
1, testContextManager.getTestExecutionListeners().size());
testContextManager = new TestContextManager(SubInheritedDefaultListenersExampleTest.class);
assertEquals(
"Verifying the number of registered TestExecutionListeners for SubInheritedDefaultListenersExampleTest.",
1, testContextManager.getTestExecutionListeners().size());
testContextManager = new TestContextManager(SubSubInheritedDefaultListenersExampleTest.class);
assertEquals(
"Verifying the number of registered TestExecutionListeners for SubSubInheritedDefaultListenersExampleTest.",
2, testContextManager.getTestExecutionListeners().size());
}
@Test
public void verifyNumListenersRegistered() throws Exception {
TestContextManager testContextManager = new TestContextManager(ExampleTest.class);
assertEquals("Verifying the number of registered TestExecutionListeners for ExampleTest.", 3,
testContextManager.getTestExecutionListeners().size());
}
@Test
public void verifyNumNonInheritedListenersRegistered() throws Exception {
TestContextManager testContextManager = new TestContextManager(NonInheritedListenersExampleTest.class);
assertEquals("Verifying the number of registered TestExecutionListeners for NonInheritedListenersExampleTest.",
1, testContextManager.getTestExecutionListeners().size());
}
@Test
public void verifyNumInheritedListenersRegistered() throws Exception {
TestContextManager testContextManager = new TestContextManager(InheritedListenersExampleTest.class);
assertEquals("Verifying the number of registered TestExecutionListeners for InheritedListenersExampleTest.", 4,
testContextManager.getTestExecutionListeners().size());
}
static class DefaultListenersExampleTest {
}
@TestExecutionListeners( { QuuxTestExecutionListener.class })
static class InheritedDefaultListenersExampleTest extends DefaultListenersExampleTest {
}
static class SubInheritedDefaultListenersExampleTest extends InheritedDefaultListenersExampleTest {
}
@TestExecutionListeners( { EnigmaTestExecutionListener.class })
static class SubSubInheritedDefaultListenersExampleTest extends SubInheritedDefaultListenersExampleTest {
}
@TestExecutionListeners(value = { QuuxTestExecutionListener.class }, inheritListeners = false)
static class NonInheritedDefaultListenersExampleTest extends InheritedDefaultListenersExampleTest {
}
@TestExecutionListeners( { FooTestExecutionListener.class, BarTestExecutionListener.class,
BazTestExecutionListener.class })
static class ExampleTest {
}
@TestExecutionListeners( { QuuxTestExecutionListener.class })
static class InheritedListenersExampleTest extends ExampleTest {
}
@TestExecutionListeners(value = { QuuxTestExecutionListener.class }, inheritListeners = false)
static class NonInheritedListenersExampleTest extends InheritedListenersExampleTest {
}
static class FooTestExecutionListener extends AbstractTestExecutionListener {
}
static class BarTestExecutionListener extends AbstractTestExecutionListener {
}
static class BazTestExecutionListener extends AbstractTestExecutionListener {
}
static class QuuxTestExecutionListener extends AbstractTestExecutionListener {
}
static class EnigmaTestExecutionListener extends AbstractTestExecutionListener {
}
}