Java Code Examples for org.springframework.test.context.TestContext#getApplicationContext()

The following examples show how to use org.springframework.test.context.TestContext#getApplicationContext() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ContextCacheTests.java    From java-technology-stack with MIT License 6 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel1() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 1
	// Should also remove Levels 2, 3-A, and 3-B, leaving nothing.
	contextCache.remove(getMergedContextConfiguration(testContext3a).getParent().getParent(),
		HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 1", 0, 1, 4);
	assertParentContextCount(0);
}
 
Example 2
Source File: ContextCacheTests.java    From spring4-understanding with Apache License 2.0 6 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel1() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 1
	// Should also remove Levels 2, 3-A, and 3-B, leaving nothing.
	contextCache.remove(getMergedContextConfiguration(testContext3a).getParent().getParent(),
		HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 1", 0, 1, 4);
	assertParentContextCount(0);
}
 
Example 3
Source File: WireMockListener.java    From restdocs-wiremock with Apache License 2.0 6 votes vote down vote up
@Override
public void beforeTestMethod(TestContext testContext) throws Exception {
	if(wireMockAnnotation == null) {
		return;
	}
	WireMockTest methodAnnotation = testContext.getTestMethod().getAnnotation(WireMockTest.class);
	
	String stubPath = "";
	if(this.wireMockAnnotation.stubPath() != null) {
		stubPath = this.wireMockAnnotation.stubPath();
	}
	if (methodAnnotation != null && methodAnnotation.stubPath() != null) {
		stubPath += "/" + methodAnnotation.stubPath();
	}

	ConfigurableApplicationContext applicationContext = (ConfigurableApplicationContext) testContext
			.getApplicationContext();

	WireMockServer server = applicationContext.getBean(WireMockServer.class);
	server.resetMappings();
	if(! stubPath.isEmpty()) {
		server.loadMappingsUsing(new JsonFileMappingsSource(new ClasspathFileSource(stubPath)));
	}
}
 
Example 4
Source File: ContextCacheTests.java    From java-technology-stack with MIT License 6 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel2() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 2
	// Should also remove Levels 3-A and 3-B, leaving only Level 1 as a context in the
	// cache but also removing the Level 1 hierarchy since all children have been
	// removed.
	contextCache.remove(getMergedContextConfiguration(testContext3a).getParent(), HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 2", 1, 1, 4);
	assertParentContextCount(0);
}
 
Example 5
Source File: ContextCacheTests.java    From java-technology-stack with MIT License 6 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel1WithExhaustiveMode() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 1
	// Should also remove Levels 2, 3-A, and 3-B, leaving nothing.
	contextCache.remove(getMergedContextConfiguration(testContext3a).getParent().getParent(),
		HierarchyMode.EXHAUSTIVE);
	assertContextCacheStatistics(contextCache, "removed level 1", 0, 1, 4);
	assertParentContextCount(0);
}
 
Example 6
Source File: ContextCacheTests.java    From spring-analysis-note with MIT License 6 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel2WithExhaustiveMode() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 2
	// Should wipe the cache
	contextCache.remove(getMergedContextConfiguration(testContext3a).getParent(), HierarchyMode.EXHAUSTIVE);
	assertContextCacheStatistics(contextCache, "removed level 2", 0, 1, 4);
	assertParentContextCount(0);
}
 
Example 7
Source File: ContextCacheTests.java    From spring4-understanding with Apache License 2.0 6 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel1WithExhaustiveMode() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 1
	// Should also remove Levels 2, 3-A, and 3-B, leaving nothing.
	contextCache.remove(getMergedContextConfiguration(testContext3a).getParent().getParent(),
		HierarchyMode.EXHAUSTIVE);
	assertContextCacheStatistics(contextCache, "removed level 1", 0, 1, 4);
	assertParentContextCount(0);
}
 
Example 8
Source File: ContextCacheTests.java    From spring-analysis-note with MIT License 6 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel1() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 1
	// Should also remove Levels 2, 3-A, and 3-B, leaving nothing.
	contextCache.remove(getMergedContextConfiguration(testContext3a).getParent().getParent(),
		HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 1", 0, 1, 4);
	assertParentContextCount(0);
}
 
Example 9
Source File: ContextCacheTests.java    From spring-analysis-note with MIT License 5 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel3Then2() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 3-A
	contextCache.remove(getMergedContextConfiguration(testContext3a), HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 3-A", 3, 1, 4);
	assertParentContextCount(2);

	// Remove Level 2
	// Should also remove Level 3-B, leaving only Level 1.
	contextCache.remove(getMergedContextConfiguration(testContext3b).getParent(), HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 2", 1, 1, 4);
	assertParentContextCount(0);
}
 
Example 10
Source File: WireMockTestExecutionListener.java    From spring-cloud-contract with Apache License 2.0 5 votes vote down vote up
private boolean applicationContextBroken(TestContext testContext) {
	try {
		testContext.getApplicationContext();
		return false;
	}
	catch (Exception ex) {
		if (log.isDebugEnabled()) {
			log.debug("Application context is broken due to", ex);
		}
		return true;
	}
}
 
Example 11
Source File: ServletTestExecutionListener.java    From spring-analysis-note with MIT License 5 votes vote down vote up
private void setUpRequestContextIfNecessary(TestContext testContext) {
	if (!isActivated(testContext) || alreadyPopulatedRequestContextHolder(testContext)) {
		return;
	}

	ApplicationContext context = testContext.getApplicationContext();

	if (context instanceof WebApplicationContext) {
		WebApplicationContext wac = (WebApplicationContext) context;
		ServletContext servletContext = wac.getServletContext();
		Assert.state(servletContext instanceof MockServletContext, () -> String.format(
					"The WebApplicationContext for test context %s must be configured with a MockServletContext.",
					testContext));

		if (logger.isDebugEnabled()) {
			logger.debug(String.format(
					"Setting up MockHttpServletRequest, MockHttpServletResponse, ServletWebRequest, and RequestContextHolder for test context %s.",
					testContext));
		}

		MockServletContext mockServletContext = (MockServletContext) servletContext;
		MockHttpServletRequest request = new MockHttpServletRequest(mockServletContext);
		request.setAttribute(CREATED_BY_THE_TESTCONTEXT_FRAMEWORK, Boolean.TRUE);
		MockHttpServletResponse response = new MockHttpServletResponse();
		ServletWebRequest servletWebRequest = new ServletWebRequest(request, response);

		RequestContextHolder.setRequestAttributes(servletWebRequest);
		testContext.setAttribute(POPULATED_REQUEST_CONTEXT_HOLDER_ATTRIBUTE, Boolean.TRUE);
		testContext.setAttribute(RESET_REQUEST_CONTEXT_HOLDER_ATTRIBUTE, Boolean.TRUE);

		if (wac instanceof ConfigurableApplicationContext) {
			@SuppressWarnings("resource")
			ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) wac;
			ConfigurableListableBeanFactory bf = configurableApplicationContext.getBeanFactory();
			bf.registerResolvableDependency(MockHttpServletResponse.class, response);
			bf.registerResolvableDependency(ServletWebRequest.class, servletWebRequest);
		}
	}
}
 
Example 12
Source File: WireMockListener.java    From restdocs-wiremock with Apache License 2.0 5 votes vote down vote up
@Override
public void afterTestMethod(TestContext testContext) throws Exception {
	if(wireMockAnnotation == null) {
		return;
	}
	ConfigurableApplicationContext applicationContext = (ConfigurableApplicationContext) testContext
			.getApplicationContext();

	applicationContext.getBean(WireMockServer.class).resetToDefaultMappings();
}
 
Example 13
Source File: ContextCacheTests.java    From java-technology-stack with MIT License 5 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel3Then2() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 3-A
	contextCache.remove(getMergedContextConfiguration(testContext3a), HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 3-A", 3, 1, 4);
	assertParentContextCount(2);

	// Remove Level 2
	// Should also remove Level 3-B, leaving only Level 1.
	contextCache.remove(getMergedContextConfiguration(testContext3b).getParent(), HierarchyMode.CURRENT_LEVEL);
	assertContextCacheStatistics(contextCache, "removed level 2", 1, 1, 4);
	assertParentContextCount(0);
}
 
Example 14
Source File: ContextCacheTests.java    From java-technology-stack with MIT License 5 votes vote down vote up
@Test
public void removeContextHierarchyCacheLevel3Then2WithExhaustiveMode() {

	// Load Level 3-A
	TestContext testContext3a = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3aTestCase.class, contextCache);
	testContext3a.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A", 3, 0, 3);
	assertParentContextCount(2);

	// Load Level 3-B
	TestContext testContext3b = TestContextTestUtils.buildTestContext(
		ClassHierarchyContextHierarchyLevel3bTestCase.class, contextCache);
	testContext3b.getApplicationContext();
	assertContextCacheStatistics(contextCache, "level 3, A and B", 4, 1, 4);
	assertParentContextCount(2);

	// Remove Level 3-A
	// Should wipe the cache.
	contextCache.remove(getMergedContextConfiguration(testContext3a), HierarchyMode.EXHAUSTIVE);
	assertContextCacheStatistics(contextCache, "removed level 3-A", 0, 1, 4);
	assertParentContextCount(0);

	// Remove Level 2
	// Should not actually do anything since the cache was cleared in the
	// previous step. So the stats should remain the same.
	contextCache.remove(getMergedContextConfiguration(testContext3b).getParent(), HierarchyMode.EXHAUSTIVE);
	assertContextCacheStatistics(contextCache, "removed level 2", 0, 1, 4);
	assertParentContextCount(0);
}
 
Example 15
Source File: OptimizedFlywayTestExecutionListener.java    From embedded-database-spring-test with Apache License 2.0 5 votes vote down vote up
protected synchronized void optimizedDbReset(TestContext testContext, AnnotatedElement element, FlywayTest annotation) throws Exception {
    try {
        if (annotation != null && annotation.invokeCleanDB() && annotation.invokeMigrateDB()
                && (!flywayBaselineAttributePresent || !annotation.invokeBaselineDB())) {

            ApplicationContext applicationContext = testContext.getApplicationContext();
            Flyway flywayBean = getFlywayBean(applicationContext, annotation);

            if (flywayBean != null) {
                FlywayDataSourceContext dataSourceContext = getDataSourceContext(applicationContext, flywayBean);

                if (dataSourceContext != null) {

                    dataSourceContext.getTarget(); // wait for completion of running flyway migration
                    DataSource dataSource = reloadDataSource(dataSourceContext, flywayBean, annotation);
                    EmbeddedDatabaseReporter.reportDataSource(dataSource, element);

                    FlywayTest adjustedAnnotation = copyAnnotation(annotation, false, false, true);
                    originalDbReset(testContext, adjustedAnnotation);

                    return;
                }
            }
        }

        originalDbReset(testContext, annotation);
    } catch (NoSuchMethodError e) {
        logger.error("\n\nHINT: Check that you are using compatible versions of org.flywaydb:flyway-core and org.flywaydb.flyway-test-extensions:flyway-spring-test dependencies!!!\n");
        throw e;
    }
}
 
Example 16
Source File: ServletTestExecutionListener.java    From spring4-understanding with Apache License 2.0 5 votes vote down vote up
private void setUpRequestContextIfNecessary(TestContext testContext) {
	if (notAnnotatedWithWebAppConfiguration(testContext) || alreadyPopulatedRequestContextHolder(testContext)) {
		return;
	}

	ApplicationContext context = testContext.getApplicationContext();

	if (context instanceof WebApplicationContext) {
		WebApplicationContext wac = (WebApplicationContext) context;
		ServletContext servletContext = wac.getServletContext();
		Assert.state(servletContext instanceof MockServletContext, String.format(
			"The WebApplicationContext for test context %s must be configured with a MockServletContext.",
			testContext));

		if (logger.isDebugEnabled()) {
			logger.debug(String.format(
				"Setting up MockHttpServletRequest, MockHttpServletResponse, ServletWebRequest, and RequestContextHolder for test context %s.",
				testContext));
		}

		MockServletContext mockServletContext = (MockServletContext) servletContext;
		MockHttpServletRequest request = new MockHttpServletRequest(mockServletContext);
		request.setAttribute(CREATED_BY_THE_TESTCONTEXT_FRAMEWORK, Boolean.TRUE);
		MockHttpServletResponse response = new MockHttpServletResponse();
		ServletWebRequest servletWebRequest = new ServletWebRequest(request, response);

		RequestContextHolder.setRequestAttributes(servletWebRequest);
		testContext.setAttribute(POPULATED_REQUEST_CONTEXT_HOLDER_ATTRIBUTE, Boolean.TRUE);
		testContext.setAttribute(RESET_REQUEST_CONTEXT_HOLDER_ATTRIBUTE, Boolean.TRUE);

		if (wac instanceof ConfigurableApplicationContext) {
			@SuppressWarnings("resource")
			ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) wac;
			ConfigurableListableBeanFactory bf = configurableApplicationContext.getBeanFactory();
			bf.registerResolvableDependency(MockHttpServletResponse.class, response);
			bf.registerResolvableDependency(ServletWebRequest.class, servletWebRequest);
		}
	}
}
 
Example 17
Source File: FlywayTestExecutionListener.java    From flyway-test-extensions with Apache License 2.0 4 votes vote down vote up
/**
 * Test the annotation an reset the database.
 *
 * @param testContext
 *            default test context filled from spring
 * @param annotation
 *            founded
 */
private void dbResetWithAnnotation(final TestContext testContext,
                                   final FlywayTest annotation) {
    if (annotation != null) {
        Flyway flyWay = null;

        final ApplicationContext appContext = testContext
                .getApplicationContext();

        if (appContext != null) {
            flyWay = getBean(appContext, Flyway.class, annotation.flywayName());

            if (flyWay != null) {
                String executionInfo = "";

                // we have a fly way configuration no lets try
                if (logger.isInfoEnabled()) {
                    executionInfo = ExecutionListenerHelper
                            .getExecutionInformation(testContext);
                    logger.info("---> Start reset database for  '"
                            + executionInfo + "'.");
                }
                if (annotation.invokeCleanDB()) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("******** Clean database for  '"
                                + executionInfo + "'.");
                    }
                    flyWay.clean();
                }
                if (annotation.invokeBaselineDB()) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("******** Baseline database  for  '"
                                + executionInfo + "'.");
                    }
                    flyWay.baseline();
                }
                if (annotation.invokeMigrateDB()) {
                    String[] locations = annotation.locationsForMigrate();

                    if ((locations == null || locations.length == 0)) {

                        if (logger.isDebugEnabled()) {
                            logger.debug("******** Default migrate database for  '"
                                    + executionInfo + "'.");
                        }

                        flyWay.migrate();
                    } else {
                        locationsMigrationHandling(annotation, flyWay,
                                executionInfo);
                    }
                }
                if (logger.isInfoEnabled()) {
                    logger.info("<--- Finished reset database  for  '"
                            + executionInfo + "'.");
                }

                return;
            }
            // in this case we have not the possibility to reset the
            // database

            throw new IllegalArgumentException("Annotation "
                    + annotation.getClass()
                    + " was set, but no Flyway configuration was given.");
        }
        // in this case we have not the possibility to reset the database

        throw new IllegalArgumentException("Annotation "
                + annotation.getClass()
                + " was set, but no configuration was given.");
    } else {
        if (logger.isDebugEnabled()) {
            logger.debug("dbResetWithAnnotation is called without a flyway test annotation.");
        }
    }
}
 
Example 18
Source File: ContextCacheTests.java    From java-technology-stack with MIT License 4 votes vote down vote up
private ApplicationContext loadContext(Class<?> testClass) {
	TestContext testContext = TestContextTestUtils.buildTestContext(testClass, contextCache);
	return testContext.getApplicationContext();
}
 
Example 19
Source File: SpringRiderTestContext.java    From database-rider with Apache License 2.0 4 votes vote down vote up
private static DataSource getDataSource(TestContext testContext, String beanName) {
    ApplicationContext context = testContext.getApplicationContext();
    return beanName.isEmpty() ? context.getBean(DataSource.class) : context.getBean(beanName, DataSource.class);
}
 
Example 20
Source File: ContextCacheTests.java    From spring-analysis-note with MIT License 4 votes vote down vote up
private ApplicationContext loadContext(Class<?> testClass) {
	TestContext testContext = TestContextTestUtils.buildTestContext(testClass, contextCache);
	return testContext.getApplicationContext();
}