- 浏览: 1250357 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (461)
- 心得体会 (166)
- Hibernate (9)
- Spring (12)
- Struts1 (3)
- Ajax (4)
- Java (54)
- 其他技术 (21)
- 数据库 (29)
- EXT (0)
- Struts2 (7)
- Xml (3)
- HTML (5)
- JavaScript (12)
- 面试相关 (3)
- BLOG (11)
- 计算机 (11)
- PMP (0)
- OGNL (1)
- LINUX (79)
- AIX (1)
- Ubuntu (14)
- Android (1)
- hadoop (3)
- LINUX debian (3)
- 心得体会 eclipse (2)
- JSTL (1)
- 心得体会 hadoop cdh3u5 (2)
- maven (5)
- Hive (1)
- 心得体会 工具使用 (3)
- spring data jpa Query By Example(QBE) (1)
- nginx (2)
- Apache (1)
- mysql (6)
- LINUX mysql (2)
- freemaker (1)
- 心得体会 FastDFS Nginx 断点续传 (1)
- LINUX FastDFS Nginx 断点续传 (1)
- 心得体会 Mybatis (2)
- 心得体会 mysql (4)
- php (1)
- logback 简介 (5)
- EL (1)
- Tomcat (2)
- win7 (1)
- LINUX maven (1)
- scrumworks (1)
- linux nginx (6)
- svn linux (1)
- mac (3)
- mac git (1)
- git (1)
- nexus (2)
- golang (1)
- LINUX Redis (1)
- mac oracle (1)
最新评论
-
a785975139:
有用
MySQL Error :SHOW PROFILES -
yijiulove:
弄了半天,参照你的方法解决了.特来感谢,知道可能是先加载,但是 ...
Spring和Mybatis整合时无法读取properties的处理方案 -
chenjinqi1987:
Missing com.sun.jdmk:jmxtools:jar:1.2.1 -
leifeng2:
请问怎么使用,运行之后d盘符没有生产音频文件呢?
java录音程序 -
sundful:
chenghong726 写道你好,我也遇到你这样的问题,按照 ...
Spring和Mybatis整合时无法读取properties的处理方案
SpringRunner
地址:http://code.google.com/p/gienah-testing/
gienah-testing项目主要包含2个Junit4的运行类: springrunner和springtransactionalrunner 。springrunner负责访问主要项目特性的引擎:bean注入。Springtransactionalrunner继承于springrunner ,允许有标记的事务测试在测试完成时将回滚到测试发生前。
使用这些类,你需要在您的测试类中标记JUnit 4的@ runwith。此外,您必须使用gienah-testing的@Configuration标记来指定Spring的配置文件。看看下面的例子:
- @RunWith(value = SpringRunner.class)
- @Configuration(locations = {"resources/spring/spring-beans.xml"})
- public class TestUserService {
- @Test public void someTestMethod() {
- ...
- }
- ...
- }
@RunWith(value = SpringRunner.class) @Configuration(locations = {"resources/spring/spring-beans.xml"}) public class TestUserService { @Test public void someTestMethod() { ... } ... }
我们现在为业务类写一个测试类,请留意@Configuration标记,你可以使用locations属性来指定spring配置文件的路径,将会获取到spring的上下文.还可以以其它方式来使用@Configuration标记, 但这些将经过审查后再补上。
现在,将通过配置运行类来获取变量,请留意下面的例子:
- @RunWith(value = SpringRunner.class)
- @Configuration(locations = {"resources/spring/spring-beans.xml"})
- public class TestUserService {
- @Dependency
- private SomeBean someBean;
- @Test
- public void someTestMethod() {
- Assert.assertNotNull(this.someBean);
- }
- }
@RunWith(value = SpringRunner.class) @Configuration(locations = {"resources/spring/spring-beans.xml"}) public class TestUserService { @Dependency private SomeBean someBean; @Test public void someTestMethod() { Assert.assertNotNull(this.someBean); } }
使用@Dependency标记可以使我们有效地使配置文件中bean的”somebean”注入到我们的测试类中,因此字段将会以实例的方式出现在我们的代码中,那么,运行类将查找spring上下文中相对应的指定的bean名称的bean,如果你想装载一个bean使用不同的名称,你可以利用@Dependency标记来为它指定”bean”属性.
另外介绍的特性就是允许使用测试标记在测试完成后使事务自动回滚到测试前。例如,下面的示例:
- @RunWith(value = SpringRunner.class)
- @Configuration(locations = {"resources/spring/spring-beans.xml"})
- public class TestUserService {
- @Test
- @Transactional
- public void someTestMethod() {
- // doing some database stuff here...
- }
- @Test
- public void someOtherTestMethod() {
- // doing some database stuff here...
- }
- }
@RunWith(value = SpringRunner.class) @Configuration(locations = {"resources/spring/spring-beans.xml"}) public class TestUserService { @Test @Transactional public void someTestMethod() { // doing some database stuff here... } @Test public void someOtherTestMethod() { // doing some database stuff here... } }
"someTestMethod"方法以事务的方式执行,而"someOtherTestMethod"方法则不会。当"someTestMethod"方法执行完后,事务将使数据库状态回滚到未执行前,你也可以使全部测试类都标记@Transactional属性,所有的测试方法都将在事务中执行
配置spring上下文
在前面的话题中,你在执行中见到@Configuration标记。这个标记有三个属性:locations, provider和loader,下面让我们看看如何去使用它们:
•locations(可选择):使用这个属性你可以使用指定的spring配置文件来生成spring上下文
•provider(可选择):使用这个属性允许你指定一个类同样可以使用@Configuration标记去指定locations的属性,这里允许一个特许的locations说明在一个测试类套件中
•loader(可选择):这个属性允许你去指定IcontextLoader的实现并去使用它构成spring上下文.一般情况使用默认配置已经足够.
@Configuration标记至少指定locations或者provider其中一个属性,如果没有它们其中的一个,将会使JUnit 4显示出一个error.让我们去看看提供的属性在执行中的实例:
- @RunWith(value = SpringRunner.class)
- @Configuration(locations = {"resources/spring/spring-beans.xml"})
- public class Test1 {
- ...
- }
- @RunWith(value = SpringRunner.class)
- @Configuration(provider = Test1.class)
- public class Test2 {
- ...
- }
- @RunWith(value = SpringRunner.class)
- @Configuration(provider = Test2.class)
- public class Test3 {
- ...
- }
@RunWith(value = SpringRunner.class) @Configuration(locations = {"resources/spring/spring-beans.xml"}) public class Test1 { ... } @RunWith(value = SpringRunner.class) @Configuration(provider = Test1.class) public class Test2 { ... } @RunWith(value = SpringRunner.class) @Configuration(provider = Test2.class) public class Test3 { ... }
注意怎样去构造est3从Test2到Test1经过的流程.这个方式(通过路径获取获取配置)是不平常和不受欢迎的,但我想说明一下这个表现.
访问spring上下文
最后,也可以直接获取spring上下文,如果这样,你应该在你的测试中创建一个局部变量和写上一个@Context标记:
- @RunWith(value = SpringRunner.class)
- @Configuration(locations = {"resources/spring/spring-beans.xml"})
- public class TestUserService {
- @Context
- private ConfigurableApplicationContext context;
- @Test
- public void someTestMethod() {
- SomeBean someBean = context.getBean("someBean");
- ...
- }
- }
@RunWith(value = SpringRunner.class) @Configuration(locations = {"resources/spring/spring-beans.xml"}) public class TestUserService { @Context private ConfigurableApplicationContext context; @Test public void someTestMethod() { SomeBean someBean = context.getBean("someBean"); ... } }
当这样做时,运行类将可以使spring上下文将会自动地注入到你的测试类中,然后你也可以访问它.
配置文件解释
EO.2版本改变了单元测试类的配置,以springXML配置文件的方式填写.因此, 该项目引进一个新的标签:gienah.
在gienah架构下使用标签,你必须在你的springXML配置文件的头部导入声明,
The emboldened text in the XML sample below represents the additions you must add to get access to the tags contained in the gienah namespaces.
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:gienah="http://www.springframework.org/schema/gienah"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/gienah
- http://www.springframework.org/schema/gienah/gienah.xsd">
- ...
- </beans>
- <gienah:test />
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gienah="http://www.springframework.org/schema/gienah" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/gienah http://www.springframework.org/schema/gienah/gienah.xsd"> ... </beans> <gienah:test />
标签
这个标签在springXML配置文件中定义一个测试类,看下面的例子去了解通常的情况:
- <gienah:test class="org.myproject.test.TestSample1" transactional="true">
- <gienah:dependency property="someBean1" bean="someBean" />
- <gienah:context property="applicationContext" />
- <gienah:method name="testSomething" transactional="true" ignore="false" />
- </gienah:test>
<gienah:test class="org.myproject.test.TestSample1" transactional="true"> <gienah:dependency property="someBean1" bean="someBean" /> <gienah:context property="applicationContext" /> <gienah:method name="testSomething" transactional="true" ignore="false" /> </gienah:test>
This approach is equals to mark the someBean1 class attribute with the @Dependency annotation. Latest, using the <gienah:context /> tag you can inject the application context to the Test class.
上述实例在配置文件中把一个测试类命名为TestSample1,它指定了在"testSomething"方法中将支持事务,而其它方法即不运行在同一个事务中(查看主事务属性和<gienah:method />标签),另一个有趣的事情是使用<gienah:dependency />可以定义要注入的bean,这样基本上等同于使用@Dependency标记来标注someBean1类属性,最后,使用<gienah:context />标签你可以在测试类中注入应用上下文
发表评论
-
Spring和Mybatis整合时无法读取properties的处理方案
2013-12-19 11:55 12369版本:Spring:3.1.4、Mybatis:3.1.1、 ... -
The reference to entity "characterEncoding" must end with the ';' delimiter
2013-08-22 09:48 1164Caused by: org.xml.sax.SAXPars ... -
@ManyToMany
2013-05-27 21:58 3660维护端注解 @ManyToMany (cascade = Ca ... -
freemarker 不支持 boolean 类型
2013-05-15 18:00 1309If in a template <td>${at ... -
在Spring3中使用注解(@Scheduled)创建计划任务
2012-02-22 11:33 8815Spring3中加强了注解的使用,其中计划任务也得到了增 ... -
Spring 2.5.6新特性之packagesToScan
2011-01-16 18:28 1767如果你使用早前版本的Spring,又恰好采用了Annotat ... -
Struts+Spring+Hibernate处理Lob(Blob,Clob)
2010-12-09 18:46 1549Struts+Spring+Hibernate处理Lob ... -
Spring Security 3应用的11个步骤
2010-04-12 09:17 1894Spring Security11个步骤为应用程序添加安全 ... -
quartz的配置表达式
2010-04-07 15:12 1177java服务自带了定时服务Timer,不过我在研究spring ... -
Spring XML配置的12个技巧
2007-12-02 22:23 1407Spring是一个强有力的java ... -
spring2.5
2007-11-23 12:53 1660Spring于10月22日推出2.5第一个发布候选版本(rc1 ...
相关推荐
第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 ...B.3.4 使用Gienah Testing在JUnit 4中进行测试 B.4 小结
第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 ...B.3.4 使用Gienah Testing在JUnit 4中进行测试 B.4 小结
Jupyter-Notebook
考研公共课历年真题集-最新发布.zip
2006-2023年上市公司资产误定价Misp数据集(4.9万样本,含原始数据、代码及结果,最新).zip
Jupyter-Notebook
Jupyter-Notebook
100个Origin软件高效使用技巧大全-最新更新.zip
Jupyter-Notebook
煤矿感知数据联网接入规范 第2部分:重要设备
1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143777985 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
KSSJ_CJ15-2023
全国电子地图行政区划道路水系数据-最新shp.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
全国乡镇级行政区划矢量数据2.0版-最新.zip
Jupyter-Notebook
Typora(version 1.2.3)导出 pdf 自定义水印的 frame.js 文件,详情可以查看:
【作品名称】:基于Java 实现的电脑鼠走迷宫的软件程序 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 迷宫地图生成算法的设计和实现 自动生成迷宫:根据迷宫生成算法自动生成一定复杂度的迷宫地图。 手动生成迷宫:根据文件中存储的固定数据生成迷宫地图。 单路径寻找算法的设计与实现:找出迷宫中一条单一的通路。 迷宫遍历算法的设计与实现:遍历迷宫中所有的可行路径。 最短路径计算算法的设计与实现:根据遍历结果,找出迷宫中所有通路中的最短通路。 (3)第二部分:界面展示部分 生成迷宫地图界面的设计与实现:根据生成的迷宫地图,用可视化的界面展现出来。 界面布局的设计与实现:根据迷宫程序的总体需求,设计和实现合理的界面布局。 相关迷宫生成过程和寻路算法在界面上的展现:将迷宫程序中的相关功能,跟界面合理结合,并采用一定的方法展 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
基于Selenium前端自动化测试工具,对youtube和tiktok数据进行爬虫,可设置自己要爬取的内容和主题,快速便捷。
Jupyter-Notebook