java测试框架Junit入门

思路:1.java断言 2.junit对断言的扩展  3.注解,写一个例子,执行类中带注解的方法  4.断言中的注解

1.断言,参考http://www.cnblogs.com/woodslee/articles/165669.html

-ea启用断言: java -ea org.test.Test

assert exp1;//exp1 为boolean类型的值

assert exp1:message;//message 为如果exp1不是true的时候,要提示的错误消息

断言一般作用:代码运行前写断言判断必须满足的条件;代码运行后判断必须符合的标准;确定代码运行过程中有无改变某些不应该变的东西

2.junit中的Assert类提供了很多方法,替代断言,参照api:http://www.udel.edu/CIS/software/dist/junit4.1/javadoc/org/junit/Assert.html

assertEquals、assertFalse、assertTrue、assertNotNull、assertNull、assertSame、fail

3.注解

@interface用来定义注解

@Retention用来声明注解的保留策略,有CLASS(注解保存在class文件中)、RUNTIME(运行时可用)和SOURCE(仅在源代码中)这三种

@Target用来声明注解可以被添加在哪些类型的元素上:注解、类、方法、方法参数、构造、字段、方法中的普通变量

定义一个能在方法上使用的注解:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface KennethTest {}

写一个测试类

public class Test {
@KennethTest public void test1(){System.out.println("test1");}
public void test2(){System.out.println("test2");}
@KennethTest public void test3(){System.out.println("test3");}
}

执行一个类中所有标记KennethTest的方法

public class Main {
public static void main(String[] args) throws Exception{//反射
Class classObj=Test.class;//获取Test的类对象 
Object obj=classObj.newInstance();//调用无参数构造,新建一个Test的对象
Method[] methods=classObj.getMethods();//获取Test类中所有public方法
for(Method method:methods){
if(method.getAnnotation(KennethTest.class)!=null){//看这个方法是否有KennethTest注解
method.invoke(obj);//如果这个方法有KennethTest注解,那么这个方法被调用执行
}
}
}
}

4.junit中的注解
@Test    @Test(expected=IndexOutOfBoundsException.class) 测试方法抛出这个异常就能通过测试  @Test(timeout=10) 测试方法不能超过10毫秒 
@Ignore  忽略测试
@Before  每个测试方法之前执行
@After   每个测试方法之后执行
@BeforeClass   在加载类时执行
@AfterClass   在所有测试方法执行结束,如果有after的话,所有after也执行结束后执行


5.通常写测试代码的规则:
1)产品源代码和测试源代码要分开,包名类名一致  例如 org.ken.PersonDao 对应测试代码可以为  test.org.ken.PersonDaoTest  
2)一个有功能类要写至少一个测试类
3)一个方法代表一个用例  用例之间要保持独立(最好不要互相调用)

你可能感兴趣的:(java测试框架Junit入门)