Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide support for publishing test execution life-cycle events #22477

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@
* TransactionalTestExecutionListener}</li>
* <li>{@link org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener
* SqlScriptsTestExecutionListener}</li>
* <li>{@link org.springframework.test.context.event.EventPublishingTestExecutionListener
* EventPublishingTestExecutionListener} (not registered by default)</li>
* </ul>
*
* @author Sam Brannen
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
* @see org.springframework.test.context.support.DirtiesContextTestExecutionListener
* @see org.springframework.test.context.transaction.TransactionalTestExecutionListener
* @see org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener
* @see org.springframework.test.context.event.EventPublishingTestExecutionListener
*/
@AliasFor("value")
Class<? extends TestExecutionListener>[] listeners() default {};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;

/**
* {@link TestContextEvent} published by {@link EventPublishingTestExecutionListener} when
* {@link org.springframework.test.context.TestExecutionListener#afterTestClass(TestContext)} is called.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.AfterTestClass
*/
@SuppressWarnings("serial")
public class AfterTestClassEvent extends TestContextEvent {

public AfterTestClassEvent(TestContext source) {
super(source);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;

/**
* {@link TestContextEvent} published by {@link EventPublishingTestExecutionListener} when
* {@link org.springframework.test.context.TestExecutionListener#afterTestExecution(TestContext)} is called.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.AfterTestExecution
*/
@SuppressWarnings("serial")
public class AfterTestExecutionEvent extends TestContextEvent {

public AfterTestExecutionEvent(TestContext source) {
super(source);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;

/**
* {@link TestContextEvent} published by {@link EventPublishingTestExecutionListener} when
* {@link org.springframework.test.context.TestExecutionListener#afterTestMethod(TestContext)} is called.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.AfterTestMethod
*/
@SuppressWarnings("serial")
public class AfterTestMethodEvent extends TestContextEvent {

public AfterTestMethodEvent(TestContext source) {
super(source);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;

/**
* {@link TestContextEvent} published by {@link EventPublishingTestExecutionListener} when
* {@link org.springframework.test.context.TestExecutionListener#beforeTestClass(TestContext)} is called.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.BeforeTestClass
*/
@SuppressWarnings("serial")
public class BeforeTestClassEvent extends TestContextEvent {

public BeforeTestClassEvent(TestContext source) {
super(source);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;

/**
* {@link TestContextEvent} published by {@link EventPublishingTestExecutionListener} when
* {@link org.springframework.test.context.TestExecutionListener#beforeTestExecution(TestContext)} is called.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.BeforeTestExecution
*/
@SuppressWarnings("serial")
public class BeforeTestExecutionEvent extends TestContextEvent {

public BeforeTestExecutionEvent(TestContext source) {
super(source);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;

/**
* {@link TestContextEvent} published by {@link EventPublishingTestExecutionListener} when
* {@link org.springframework.test.context.TestExecutionListener#beforeTestMethod(TestContext)} is called.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.BeforeTestMethod
*/
@SuppressWarnings("serial")
public class BeforeTestMethodEvent extends TestContextEvent {

public BeforeTestMethodEvent(TestContext source) {
super(source);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;

/**
* {@link org.springframework.test.context.TestExecutionListener} that may be used to publish test life-cycle event to
* the Spring test {@link org.springframework.context.ApplicationContext}.
*
* <p>These events may be consumed for various reasons, such as resetting {@em mock} beans or tracing test
* execution. Since these events may consumed as part of regular Spring beans, they can be shared among
* different test classes.
*
* <p>This {@link org.springframework.test.context.TestExecutionListener} is not active by default. Test classes
* should be annotated using {@link org.springframework.test.context.TestExecutionListeners}, if they want to use it.
* Alternatively, it may be added to {@code spring.factories}, if needed.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.BeforeTestClass
* @see org.springframework.test.context.event.annotation.PrepareTestInstance
* @see org.springframework.test.context.event.annotation.BeforeTestMethod
* @see org.springframework.test.context.event.annotation.BeforeTestExecution
* @see org.springframework.test.context.event.annotation.AfterTestExecution
* @see org.springframework.test.context.event.annotation.AfterTestMethod
* @see org.springframework.test.context.event.annotation.AfterTestClass
*/
public class EventPublishingTestExecutionListener extends AbstractTestExecutionListener {

@Override
public void beforeTestClass(TestContext testContext) {
testContext.getApplicationContext().publishEvent(
new BeforeTestClassEvent(testContext));
}

@Override
public void prepareTestInstance(TestContext testContext) {
testContext.getApplicationContext().publishEvent(
new PrepareTestInstanceEvent(testContext));
}

@Override
public void beforeTestMethod(TestContext testContext) {
testContext.getApplicationContext().publishEvent(
new BeforeTestMethodEvent(testContext));
}

@Override
public void beforeTestExecution(TestContext testContext) {
testContext.getApplicationContext().publishEvent(
new BeforeTestExecutionEvent(testContext));
}

@Override
public void afterTestExecution(TestContext testContext) {
testContext.getApplicationContext().publishEvent(
new AfterTestExecutionEvent(testContext));
}

@Override
public void afterTestMethod(TestContext testContext) {
testContext.getApplicationContext().publishEvent(
new AfterTestMethodEvent(testContext));
}

@Override
public void afterTestClass(TestContext testContext) {
testContext.getApplicationContext().publishEvent(
new AfterTestClassEvent(testContext));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2002-2019 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.event;

import org.springframework.test.context.TestContext;

/**
* {@link TestContextEvent} published by {@link EventPublishingTestExecutionListener} when
* {@link org.springframework.test.context.TestExecutionListener#prepareTestInstance(TestContext)} is called.
*
* @author Frank Scheffler
* @since 5.2
* @see org.springframework.test.context.event.annotation.PrepareTestInstance
*/
@SuppressWarnings("serial")
public class PrepareTestInstanceEvent extends TestContextEvent {

public PrepareTestInstanceEvent(TestContext source) {
super(source);
}

}
Loading