对于一名测试工程师来说如果不能进行单元测试、接口测试,是非常遗憾的;因为功能测试只能占到测试收益的5%,强化代码能力对于目前的我们来说至关重要,我认为一名测试工程师至少要是一个中级以上的开发工程师,当然我也在努力朝着这个方向迈进,我们共勉;

第一步:安装eclipse,百度搜索官网直接下载最新版本,此软件为免费开源;

第二步:创建包cn.junit4创建一个Calculator类,代码如下:

package cn.junit4;

public class Calculator {

    public  int result;
    public  int add(int operand1,int operand2){
        result=operand1+operand2;
        return result;
    }
    public int subtract(int operand1,int operand2){
        return result=operand1-operand2;
    }
    public int multiple(int operand1,int operand2){
        return result=operand1*operand2;
    }
    public int divide(int operand1,int operand2){
        return result=operand1/0;
    }
    public  int getResult(){
        return this.result;
    }

}

第三步:创建junit test case,代码如下:

package cn.junit4;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

public class CalculatorTest {
    private static Calculator Cal= new Calculator();

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("@BeforeClass");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("@AfterClass");
    }

    @Before
    public void setUp() throws Exception {
        System.out.println("测试开始");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("测试结束");
    }

    @Test
    public void testAdd() {
        Cal.add(2,2);
        assertEquals(4, Cal.getResult());
        //fail("Not yet implemented");
    }
    @Test
    public void testSubstract(){
        Cal.subtract(4,2);
        assertEquals(2,Cal.getResult());
    }
    @Ignore
    public void testMultiply(){
        fail("Not yet implemented");
    }
    @Test(timeout=2000)
    public void testDivide(){
        for(;;);
    }
    @Test(expected=ArithmeticException.class)
    public void testDivideByZero(){
        Cal.divide(4,0);
    }

}

第四步:在同一个包下创建另一个类Calculatortest2,代码如下:

package cn.junit4;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class CalculatorTest2 {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("beforeclass类之前运行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("Afterclass类运行结束");
    }

    @Before
    public void setUp() throws Exception {
        System.out.println("@before");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("@After");
    }

    @Test
    public void test() {
        //fail("Not yet implemented");
        System.out.println("CalculatorTest2测试方法被调用");
    }

}

第五步:创建junit4 test suite代码如下:

package cn.junit4;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({ CalculatorTest.class, CalculatorTest2.class })
public class AllTests {

}

第六步:运行junit4 test suite 完成Calculator类中方法的调用与预期一致  timeout=2000 为执行时间不得超过2秒而此方法中为死循环所以执行失败,excepected=ArithmeticException.class表示此方法执行后必须抛出ArithmeticException异常错误,用于验证是否抛出异常错误;AssertEquals()方法断言实际计算结果与预期结果是否一致;@ignore 标示的方法占时不执行;junit4 test suite主要用于让测试工程师实现并发批量执行测试用例;