### Question:
SqlSessionFactoryBean implements FactoryBean<SqlSessionFactory>, InitializingBean, ApplicationListener<ApplicationEvent> { public void setConfigLocation(Resource configLocation) { this.configLocation = configLocation; }  void setObjectFactory(ObjectFactory objectFactory); void setObjectWrapperFactory(ObjectWrapperFactory objectWrapperFactory); DatabaseIdProvider getDatabaseIdProvider(); void setDatabaseIdProvider(DatabaseIdProvider databaseIdProvider); Class<? extends VFS> getVfs(); void setVfs(Class<? extends VFS> vfs); Cache getCache(); void setCache(Cache cache); void setPlugins(Interceptor[] plugins); void setTypeAliasesPackage(String typeAliasesPackage); void setTypeAliasesSuperType(Class<?> typeAliasesSuperType); void setTypeHandlersPackage(String typeHandlersPackage); void setTypeHandlers(TypeHandler<?>[] typeHandlers); void setTypeAliases(Class<?>[] typeAliases); void setFailFast(boolean failFast); void setConfigLocation(Resource configLocation); void setConfiguration(Configuration configuration); void setMapperLocations(Resource[] mapperLocations); void setConfigurationProperties(Properties sqlSessionFactoryProperties); void setDataSource(DataSource dataSource); void setSqlSessionFactoryBuilder(SqlSessionFactoryBuilder sqlSessionFactoryBuilder); void setTransactionFactory(TransactionFactory transactionFactory); void setEnvironment(String environment); @Override void afterPropertiesSet(); @Override SqlSessionFactory getObject(); @Override Class<? extends SqlSessionFactory> getObjectType(); @Override boolean isSingleton(); @Override void onApplicationEvent(ApplicationEvent event);  }### Answer:
@Test void testSetConfigLocation() throws Exception { setupFactoryBean(); factoryBean.setConfigLocation(new org.springframework.core.io.ClassPathResource( "org/mybatis/spring/mybatis-config.xml")); SqlSessionFactory factory = factoryBean.getObject(); assertThat(factory.getConfiguration().getEnvironment().getId()).isEqualTo(SqlSessionFactoryBean.class.getSimpleName()); assertThat(factory.getConfiguration().getEnvironment().getDataSource()).isSameAs(dataSource); assertThat(factory.getConfiguration().getEnvironment().getTransactionFactory().getClass()) .isSameAs(org.mybatis.spring.transaction.SpringManagedTransactionFactory.class); assertThat(factory.getConfiguration().getVfsImpl()).isSameAs(JBoss6VFS.class); assertThat(factory.getConfiguration().isCacheEnabled()).isFalse(); assertThat(factory.getConfiguration().isUseGeneratedKeys()).isTrue(); assertThat(factory.getConfiguration().getDefaultExecutorType()).isSameAs(org.apache.ibatis.session.ExecutorType.REUSE); assertThat(factory.getConfiguration().getMappedStatementNames().size()).isEqualTo(8); assertThat(factory.getConfiguration().getResultMapNames().size()).isEqualTo(0); assertThat(factory.getConfiguration().getParameterMapNames().size()).isEqualTo(0); }
@Test public void testSetConfigLocation() throws Exception { setupFactoryBean(); factoryBean.setConfigLocation(new org.springframework.core.io.ClassPathResource( "org/mybatis/spring/mybatis-config.xml")); SqlSessionFactory factory = factoryBean.getObject(); assertEquals(factory.getConfiguration().getEnvironment().getId(), SqlSessionFactoryBean.class.getSimpleName()); assertSame(factory.getConfiguration().getEnvironment().getDataSource(), dataSource); assertSame(factory.getConfiguration().getEnvironment().getTransactionFactory().getClass(), org.mybatis.spring.transaction.SpringManagedTransactionFactory.class); assertSame(factory.getConfiguration().getVfsImpl(), JBoss6VFS.class); assertFalse(factory.getConfiguration().isCacheEnabled()); assertTrue(factory.getConfiguration().isUseGeneratedKeys()); assertSame(factory.getConfiguration().getDefaultExecutorType(), org.apache.ibatis.session.ExecutorType.REUSE); assertEquals(8, factory.getConfiguration().getMappedStatementNames().size()); assertEquals(0, factory.getConfiguration().getResultMapNames().size()); assertEquals(0, factory.getConfiguration().getParameterMapNames().size()); }