结论是两者差不多,一般人用用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());
}
}
}