MLDN
课程咨询[孔老师]QQ 1031143579孔老师QQ课程咨询留言 课程咨询[徐老师 ]QQ 945313230
徐老师QQ课程咨询留言
课程咨询[刘老师 ]QQ 514543793
刘老师QQ课程咨询留言
java培训
北京java培训
IT电子教育门户 高端JAVA培训 -=> 资源中心 -=> JAVA SE技术专区 -=> JAVA面向对象 -=> 正文

Java的DBC接口设计

 发布日期:2009-2-13 9:03:00 发布者:[IT电子教育门户]   评论:[]  浏览:

SpringContracts 是一个契约式框架他通过annotation和AOP思想进行设计 本文主要讲述一下他和Junit的结合,与spring的结合大家可以看官方文档 看例子:

@Invariant( condition="this.capacity > 0 and this.size <= this.capacity" )

public interface Stack {

     @Postcondition( condition="return >= 0" )

     public int getSize();

 

     @Precondition( bindArgs="arg1=element", condition="!empty element" )

     @Postcondition( bindArgs="arg1=element", condition="this.size == old:this.size + 1 and this.top ==   element" )

     public void push( Object elem );

 

     @Postcondition( condition="(this.size > 0) ==> (!empty return)" )

     public Object getTop();

 

     public Object pop();

     @Precondition(condition="arg1 > 0")

     public void setNumber(int number);

}
 


    SpringContracts 的annotation表达式主要是EL和groovy,默认是EL. 有了这个接口那的所有实现类就必须遵循这个契约限制。

    例如:

public void testPushShouldThrowExceptionWhenInputNullObject(){

    Stack stack = new StackImp();

    stack.push(null);//这时候将抛出Exception condition="!empty element"

}
 


    要执行以上unit test你还需要配置aop.xml文件,默认在META-INF/aop.xml

    内容如下:

<?xml version="1.0"?>
<aspectj>
  <aspects>
    <aspect name="org.springcontracts.dbc.interceptor.ContractValidationInterceptor">
    </aspect>
  </aspects>
  <weaver>
    <exclude within="org.springframework..*"/>
    <exclude within="org.apache..*"/>
    <exclude within="org.springcontracts..*"/>
    <include within="org.ltw.springcontracts..*"/>     <!-- 这里指定你相应的类放置路径。
    <include within="com.testProject..*"/>             <!-- 这里指定你相应的类放置路径。
  </weaver>
</aspectj>


    还需要在运行test的时候为你的run 器设置代理类

    ok现在你就可以run你的junit进行相应的测试了。

java视频教程
JAVA核心_75对象序列化练习
 JAVA核心_75对象序列化..
JAVA核心_74对象序列化
 JAVA核心_74对象序列化..
JAVA核心_73字符编码
 JAVA核心_73字符编码 ..
JAVA核心_72Scanner
 JAVA核心_72Scann..
JAVA核心_71 IO练习 二
 JAVA核心_71 IO练习..
相关文章 推荐文章
JAVA里面方法调用时传对象参数..[3.16]
Java判断字符串是否为空的三种..[2.13]
Java中跳出多层循环的简单方法..[2.11]
Java的垃圾回收总结 [1.9]
扩展java.lang.Stri..[1.5]
Java抽象类和接口和继承之间关系
JAVA里面方法调用时传对象参数的陷阱..
Java字符串与文件的互转
Java的DBC接口设计
Java判断字符串是否为空的三种方法
热门文章
java中关于数组初始化的常用方法
Java抽象类和接口和继承之间关系
JAVA里面方法调用时传对象参数的陷阱..
如何用JAVA来实现“生产者―消费者”..
理解Java面向对象的程序设计思想
Java调用存储过程
操纵java数组
java术语集
检查是否是电话号码的函数
java性能优化
今日更新
Java抽象类和接口和继承之间关系
String类和StringBuffe..
JAVA里面方法调用时传对象参数的陷阱..
Java字符串与文件的互转
Java的DBC接口设计
Java判断字符串是否为空的三种方法
Java中跳出多层循环的简单方法
Java的垃圾回收总结
扩展java.lang.String功..
JAVA四种基本排序
JAVA招聘网
 评一评
正在读取…
  姓名:
  评论:
    
【注】 发表评论必需遵守以下条例: !!!
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
关于我们 | 商务合作 | 招聘信息 | 客服中心 | 服务条款 | 免责声明 | 网站导航 QQ留言
Copyright 2009 魔乐培训MLDN.CN all rights reserved 版权所有 京ICP备07008611号