浙江金顶建设公司网站,兰州网站制作公司服务电话,山西建筑工程集团有限公司,内容管理网站建设方案junit jndi直到最近#xff0c;我还使用静态方法来设置内存数据库#xff08;HSQLDB#xff09;。 我在JUnit测试的setUp / tearDown中调用了这些方法。 当我使用Spring时#xff0c;这对我来说总是有点不自然#xff0c;并且所有内容都应在其应用程序上下文中运行。 创建… junit jndi 直到最近我还使用静态方法来设置内存数据库HSQLDB。 我在JUnit测试的setUp / tearDown中调用了这些方法。 当我使用Spring时这对我来说总是有点不自然并且所有内容都应在其应用程序上下文中运行。 创建一个简单的JNDI bean 在生产中使用JNDI时我还必须为应用程序创建JNDI资源。 一个简单的使用Apache Commons DBCP的Spring Bean可以解决这个问题 public class JndiBean {public JndiBean() {try {DriverAdapterCPDS cpds new DriverAdapterCPDS();cpds.setDriver(org.hsqldb.jdbc.JDBCDriver);cpds.setUrl(jdbc:hsqldb:mem:testdb);cpds.setUser(SA);cpds.setPassword();SharedPoolDataSource dataSource new SharedPoolDataSource();dataSource.setConnectionPoolDataSource(cpds);dataSource.setMaxActive(10);dataSource.setMaxWait(50);SimpleNamingContextBuilder builder new SimpleNamingContextBuilder();builder.bind(java:comp/env/jdbc/timeandbill, dataSource);builder.activate();} catch (NamingException | ClassNotFoundException ex) {ex.printStackTrace();}}
} 您不应该三思而后行地使用此基本配置但是它对于单元测试非常有效。 首先我创建了一个驱动程序适配器其中包含连接数据库所需的一切。 它可以是MySQLPostgres或您喜欢的其他任何东西。 然后我创建一个SharedPoolDatasource。 由于测试通常按顺序运行因此实际上不必保持大量连接。 即使不是这样通常也将至少为每个测试类创建Spring上下文。 您不太可能从这里获得池的好处但是我想坚持生产服务器通常会做的事情。 SimpleNamingContextBuilder最终将先前创建的数据源绑定到JNDI上下文。 如您所见这是一件很简单的事情只需将其绑定然后激活即可完成。 将JNDI bean添加到上下文 下一步是将其添加到第二个applicationContext.xml中该文件仅由JUnit测试加载。 我位于“单元测试”文件夹中并且包含 bean idjndi classde.grobmeier.tab.webapp.JndiBean lazy-initfalse / 测试中的这些注释确保我加载了所有applicationContext文件 RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(locations{classpath*:applicationContext.xml})
public class TimeConverterTest { 我的生产applicationContext包含以下内容 bean iddataSource classorg.springframework.jndi.JndiObjectFactoryBeanproperty namejndiName valuejava:comp/env/jdbc/timeandbill/property nameresourceRef valuetrue /
/beanbean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource /
/bean 由于没有在JUnit级别运行的Java EE服务器。 而是手动创建了JNDI连接。 在生产中不会加载JUnits applicationContext并且Java EE容器提供JNDI资源。 旁注我发现Mybatis依赖于Springs自动装配“ byType”功能。 翻译自: https://www.javacodegeeks.com/2016/11/create-jndi-resources-junit-testing-using-spring.htmljunit jndi