junit4基本功能

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

1.基本测试

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

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

@Test
public void test2(){
  System.out.println("test2");
}
}

测试用例类2:Test2.java

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
*
*/
@RunWith(Suite.class)
@SuiteClasses({Test1.class,Test2.class})
public class SuiteTest {

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

}

3.参数测试

参数测试代码要多一些

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;
}

}

你可能感兴趣的:(apache,框架,单元测试,JUnit)