Test之guava

结论是两者差不多,一般人用用testng就好。
原因:1.testng底层调用junit
2.历史上曾有testng优于junit的一段时期,但随后junit已更新并追赶上来
3.testng的data provider使用较方便
4.testng能做的事情junit都能做,但是有的地方会比较麻烦,例如,数据驱动,多线程并发执行测试用例。testng更便捷,自带。junit则要依靠第三方工具提供。
5.junit能做的事情testng也都能做,但junit也有更便捷的时候。比如soft assertion,junit可以直接继承jassert做,testng你要自己去实现静态类来做。
6.junit是testng的底层,灵活度上更高。testng调用junit,对测试员来说用户体验更好。

http://www.codeceo.com/article/8-java-test-framework.html
AssertJ:支持流式断言的Java测试框架

http://www.testwo.com/article/567

import static com.google.common.primitives.Shorts.checkedCast;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.google.common.base.Preconditions;

public class PreconditionsTest {

    /***
     *    http://www.cnblogs.com/peida/p/guava_preconditions.html
     * 
     *   Preconditions里面的方法:
     * 
     *   1 .checkArgument(boolean) :   功能描述:检查boolean是否为真。 用作方法中检查参数
     *   失败时抛出的异常类型: IllegalArgumentException
     * 
     *   2.checkNotNull(T):   功能描述:检查value不为null, 直接返回value;
     *   失败时抛出的异常类型:NullPointerException
     * 
     *   3.checkState(boolean):   功能描述:检查对象的一些状态,不依赖方法参数。 例如,
     * Iterator可以用来next是否在remove之前被调用。   失败时抛出的异常类型:IllegalStateException
     * 
     *   4.checkElementIndex(int index, int size):
     *   功能描述:检查index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0,
     * size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
     *   失败时抛出的异常类型:IndexOutOfBoundsException
     * 
     * 
     *   5.checkPositionIndex(int index, int size):
     *   功能描述:检查位置index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0,
     * size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
     *   失败时抛出的异常类型:IndexOutOfBoundsException
     * 
     *   6.checkPositionIndexes(int start, int end, int size):   功能描述:检查[start,
     * end)是一个长度为size的list, string或array合法的范围子集。伴随着错误信息。
     *   失败时抛出的异常类型:IndexOutOfBoundsException
     * 
     * @Test public void Preconditions() throws Exception {
     * 
     *       getPerson(8,"peida");
     * 
     *       getPerson(-9,"peida");
     * 
     *       getPerson(8,"");
     * 
     *       getPerson(8,null); }
     * 
     *       public static void getPerson(int age,String neme)throws Exception{
     *       if(age>0&&neme!=null&&neme.isEmpty()!=true){
     *       System.out.println("a person age:"+age+",neme:"+neme); }else{
     *       System.out.println("参数输入有误!"); } }
     **/

    @Test
    public void Preconditions() throws Exception {

        getPersonByPrecondition(8, "peida");
        getPersonByPrecondition(-9, "peida");
        getPersonByPrecondition(8, "");
        getPersonByPrecondition(8, null);

        long longNum = 100000;

        checkedCast(longNum);

        List<Integer> intList = new ArrayList<Integer>();
        for (int i = 0; i < 10; i++) {
            try {
                checkState(intList, 9);
                intList.add(i);
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
        checkPositionIndex(intList, 3);
        checkPositionIndex(intList, 13);
        checkPositionIndexes(intList, 3, 7);
        checkPositionIndexes(intList, 3, 17);
        checkPositionIndexes(intList, 13, 17);
        checkElementIndex(intList, 6);
        checkElementIndex(intList, 16);

        Integer.toBinaryString(i)
    }

    public static void getPersonByPrecondition(int age, String name)
            throws Exception {
        try {
            Preconditions.checkNotNull(name,
                    String.format("name[%s] 为null", name));
            Preconditions.checkArgument(name.length() > 0,
                    String.format("name[%s] 长度必须大于0", name));
            Preconditions.checkArgument(age > 0,
                    String.format("age[%d] 必须大于0", age));
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }

    public static void checkState(List<Integer> intList, int index) {
        try {
            Preconditions.checkState(intList.size() < index,
                    " intList size 不能大于" + index);
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

    public static void checkPositionIndex(List<Integer> intList, int index) {
        try {
            Preconditions.checkPositionIndex(index, intList.size(), "index "
                    + index + " 不在list中,List size为:" + intList.size());
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

    public static void checkPositionIndexes(List<Integer> intList, int start,
            int end) {
        try {
            Preconditions.checkPositionIndexes(start, end, intList.size());
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

    public static void checkElementIndex(List<Integer> intList, int index) {
        try {
            Preconditions.checkElementIndex(index, intList.size(), "index 为 "
                    + index + " 不在list中,List size为:" + intList.size());
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值