LucKy_one

Always aiming higher


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

在Spring中使用Junit4测试时访问JNDI资源

发表于 2017-03-23
在Spring中使用Junit4测试时JNDI资源的访问问题

系统使用JNDI来访问在容器上配置的资源信息(例如数据库信息),如果用xml来配置的话一般这么写

<jee:jndi-lookup id=”dataSource” jndi-name=”jdbc/database” expected-type=”javax.sql.DataSource” />

但是使用Junit来做测试的时候并不会访问容器,也就无法获取资源信息。这个时候你可以另外写一份applicationContextTest.xml来供测试用,或者可以在Junit里配置JNDI资源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class XXXXXXTest {
@BeforeClass
public static void setUpJndi() throws IllegalStateException, NamingException{

//配置DataSource
SybDataSource ds = new SybDataSource();
ds.setServerName("127.0.0.1");
ds.setPortNumber(5000);
ds.setDatabaseName("databaseName");
ds.setNetworkProtocol("Tds");
ds.setUser("user");
ds.setPassword("password");
ds.setCHARSET("cp936");

//配置ActiveMQ
ActiveMQTopic topic = new ActiveMQTopic("testTopic");
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

//org.springframework.mock.jndi.SimpleNamingContextBuilder
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind("jdbc/database", ds);
builder.bind("jms/topic", topic);
builder.bind("jms/topicConnFactory", connectionFactory);
builder.activate();
}
}

实际使用的时候,直接使用生产的applicationContext很容易因为过于庞大而初始化过程缓慢,如果项目非常大还是应该单独写几个测试的applicationContext分模块来测试。

# Spring # Junit4 # JNDI
Spring+Maven+H2(Jave配置,非Spring Boot)
JDK8中的effectively final

Liu Tianhe

喜欢金融,喜欢科技
31 日志
29 标签
RSS
GitHub E-Mail
© 2014 – 2022 Liu Tianhe
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Mist v7.3.0