View Javadoc
1   package guru.mikelue.jdut.junit4.test;
2   
3   import javax.sql.DataSource;
4   
5   import org.junit.ClassRule;
6   import org.junit.rules.ExternalResource;
7   import org.slf4j.Logger;
8   import org.slf4j.LoggerFactory;
9   import org.springframework.context.ApplicationContext;
10  import org.springframework.context.annotation.AnnotationConfigApplicationContext;
11  
12  public abstract class AbstractDataSourceTestBase {
13  	private Logger logger = LoggerFactory.getLogger(AbstractDataSourceTestBase.class);
14  
15  	protected AbstractDataSourceTestBase() {}
16  
17  	private static AnnotationConfigApplicationContext ctx;
18  
19  	@ClassRule
20  	public final static ExternalResource dataSourceResource = new ExternalResource() {
21  		@Override
22  		protected void before()
23  		{
24  			getApplicationContext();
25  		}
26  
27  		@Override
28  		protected void after()
29  		{
30  			ctx.close();
31  			ctx = null;
32  		}
33  	};
34  
35  	protected Logger getLogger()
36  	{
37  		return logger;
38  	}
39  
40  	protected static ApplicationContext getApplicationContext()
41  	{
42  		if (ctx == null) {
43  			ctx = new AnnotationConfigApplicationContext();
44  			ctx.register(DataSourceContext.class);
45  			ctx.refresh();
46  		}
47  
48  		return ctx;
49  	}
50  
51  	protected static DataSource getDataSource()
52  	{
53  		return getApplicationContext().getBean(DataSource.class);
54  	}
55  }