测试方法上面必须使用@Test注解进行修饰。
单体测试的目的
- 确保代码和详细设计一致
- 确保程序可以正常执行
- 尽早发现问题
- 为将来的测试阶段做准备
Junit测试
单体测试用例一般利用assert方法来创建,assert方法建立在Junit框架中并且确定程序代码是否按照需求来编写,一般有以下aeesrt方法:
- assertTrue(boolean)
- assertTure(String,boolean)
- assertEquals(Object,Object)
- assertNull(Object)
- fail(String)
setUp方法中,可以很好地练习初始化在测试里用到的所有的变量;tearDown方法可以明确地删除/破坏所有在测试用例中被用到的变量
Eclipse使用EclEmma测试代码覆盖率
Transient关键字
Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输,一般当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让我们的实体类实现Serializable接口,目的就是为了让其可序列化。
而transient关键字的作用,就是让某些被修饰的成员属性变量不被序列化或者说不持久化其值,有利于节省存储空间。
@Autowired 注释
@Autowired 是一个注释,它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。(比如我new了一个person,一个是aa,一个是bb,编译期不知道是哪一个,主函数里运行的时候才知道)@Autowired 默认是按照类去匹配,配合 @Qualifier 指定按照名称去装配 bean。对在哪里和如何完成自动连接提供了更多的细微的控制。
@classrule
junit中的@classrule,可以在所有类方法开始前进行一些初始化调用,比如创建临时文件,
Java测试框架之JMockit
使用JMockit API来mock被依赖的代码,从而进行隔离测试。
JMockit 是用以帮助开发人员编写测试程序的一组工具和API,该项目完全基于 Java 5 SE 的 java.lang.instrument 包开发,内部使用 ASM 库来修改Java的Bytecode。所以他能解决当测试的代码包含了一些静态方法,未实现方法,未实现接口的问题。ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。
@Mocked注释
用于全局变量或方法的参数,标识一个指定的class的实例或被测对象的参数被Mock掉。JMockit根据Expectation方法中的设置来初始化被Mock对象的值。
所有对象(基本类型和Array除外)都可以通过@Mocked标识被Mock掉。
当一个被测对象的参数被Mock的时候,执行测试时,该参数将不再按照原有的代码来实例化,而是将实例化的工作委托给JMockit来完成。
被Mock的对象的除了继承自Object的方法之外的所有方法(包括构造函数、静态函数等)都会被JMockit重写。
Deencapsulation
用于Mock私有方法和私有属性。这里
@Action注解
@Action指定一个类为action,相应配置文件里的…标签,当中能够配置例如以下属性
results:配置返回的结果集属性,相当于struts2中的列表,能够在{}中配置属性
value:配置action的名字,相当于中的name属性
interceptorRefs:配置拦截器
@Action能够定义在类上,也能够定义在方法上