三里屯摇滚 发表于 2012-02-25 11:56

junit4新特性-测试必备利器 2


junit4新特性-测试必备利器 2







三、以下来源于:http://q.sohu.com/forum/5/topic/1531298


下面上三种基本的测试用例的程序编写:

1.基本测试 view plaincopyprint?import static org.junit.Assert.*;
import org.apache.commons.logging.*;
import org.junit.*;


public class Test1{
private static Log log = LogFactory.getLog(Test1.class);

@Before//每个测试单元执行前执行该方法,方法级的前置,当然还有类级别的前置BeforeClass,只执行一次   
public void init() {
log.info("init.....");
}

@After//每个测试单元执行后执行该方法,方法级的后置,当然还有类级别的后置AfterClass,只执行一次   
public void destory() {
log.info("release resource");
}

public void functionOne() {
System.out.println("");
}

@Test(expected=NullPointerException.class)//指定抛出指定的异常   
public void functionError() {
String test = null;   
//   assertNull(test);   
   test.toString();
}

@Test
public void Equals() {
String testPoint = new String("true");
String testTargt = new String("true1");
assertEquals(testPoint, testTargt);
}
   
@Ignore("此测试已被忽略")
@Test(timeout=1)//测试运行时间 (单位:millisecond)   
public void timeout() {
String testPoint = new String("true");
String testTargt = new String("true1");
assertTrue("Pattern did not validate zip code", true);
}

}
import static org.junit.Assert.*;
import org.apache.commons.logging.*;
import org.junit.*;


public class Test1{
private static Log log = LogFactory.getLog(Test1.class);

@Before//每个测试单元执行前执行该方法,方法级的前置,当然还有类级别的前置BeforeClass,只执行一次
public void init() {
log.info("init.....");
}

@After//每个测试单元执行后执行该方法,方法级的后置,当然还有类级别的后置AfterClass,只执行一次
public void destory() {
log.info("release resource");
}

public void functionOne() {
System.out.println("");
}

@Test(expected=NullPointerException.class)//指定抛出指定的异常
public void functionError() {
String test = null;
//   assertNull(test);
   test.toString();
}

@Test
public void Equals() {
String testPoint = new String("true");
String testTargt = new String("true1");
assertEquals(testPoint, testTargt);
}

@Ignore("此测试已被忽略")
@Test(timeout=1)//测试运行时间 (单位:millisecond)
public void timeout() {
String testPoint = new String("true");
String testTargt = new String("true1");
assertTrue("Pattern did not validate zip code", true);
}

}2.套件测试

测试用例类1:Test1.java
view plaincopyprint?public class Test1 {
@Test
public void test1(){
System.out.println("test1");
}
   
@Test
public void test2(){
System.out.println("test2");
}
}
public class Test1 {
@Test
public void test1(){
System.out.println("test1");
}

@Test
public void test2(){
System.out.println("test2");
}
}测试用例类2:Test2.java
view plaincopyprint?public class Test2 {
@Test
public void Tets3(){
System.out.println("test3");
}
@Test
public void Test4(){
System.out.println("test4");
}
}
public class Test2 {
@Test
public void Tets3(){
System.out.println("test3");
}
@Test
public void Test4(){
System.out.println("test4");
}
}测试套件类:/**
* 在 JUnit 4 中,套件语义被两个新注释所替代。
* 第一个是 @RunWith,设计它是为了方便让不同的运行器
* (除了构建进框架的运行器)执行一个特别的测试类。
* JUnit 4 绑定一个叫做 Suite 的套件运行器,
* 必须在 @RunWith 注释中指定这个运行器。
* 不仅如此,还必须提供另一项叫做 @SuiteClasses 的注释,
* 它将一个意欲表示测试套件的类列表作为参数。
* @author JersoN
*
*/

view plaincopyprint?@RunWith(Suite.class)
@SuiteClasses({Test1.class,Test2.class})
public class SuiteTest {

   /*在这里还可以继续添加新的测试@Test*/

}
@RunWith(Suite.class)
@SuiteClasses({Test1.class,Test2.class})
public class SuiteTest {

   /*在这里还可以继续添加新的测试@Test*/

}3.参数测试

参数测试代码要多一些 view plaincopyprint?import java.util.*;
import org.apache.commons.logging.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import static org.junit.Assert.*;

@RunWith(Parameterized.class)//指定此测试类使用测试时使用参数集进行测试   
public class MainTest {
Log log = LogFactory.getLog(MainTest.class);

@Test
public void testEqual() {
assertTrue(source.equals(target));
}
   
@Test
public void testStringLength(){

//可以看到以往做参数测试得把测试的参数传递进来,当我们要测试多个参数的时候很麻烦,Juint4用了更好的实现解决这个问题,你可以把定义的多个参数用于不同的测试   
assertTrue(source.length()==target.length());
}

@Parameters
public static Collection params() {
return Arrays.asList(new Object[][] {
    { "22101", "22101" },
    { "221x1", "22101" },
    { "22101-5150", "22101"},
    { "221015150", "221015150" }
});
}
   
/**
* 以下是为参数化测试所做的编码
*/
private String source;
private String target;
   
/**
* 参数化测试必须的构造函数
* @param source 对应参数集中的第一个参数
* @param target 对应参数集中的第二个参数
*/
public MainTest(String source,String target){
this.source = source;
this.target = target;
}
   
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}

}

阳光的扣子 发表于 2012-02-25 11:56

谢谢分享
页: [1]
查看完整版本: junit4新特性-测试必备利器 2